我想知道,我们如何确定用 register
说明符定义的变量是否存储在 CPU 寄存器中?
最佳答案
基本上,你不能。 C 标准中绝对没有任何内容可以让您控制。
使用 register
关键字给编译器一个提示变量可能存储到一个寄存器中(即允许尽可能快的访问).编译器可以忽略它。每个编译器都可以采用不同的方式来接受/拒绝提示。
引用 C11
,第 6.7.1 章,(强调我的)
A declaration of an identifier for an object with storage-class specifier
register
suggests that access to the object be as fast as possible. The extent to which such suggestions are effective is implementation-defined.
FWIW,大多数现代编译器可以检测最常用的变量并将它们分配到实际寄存器中,如果需要。请记住,CPU 寄存器是一种稀缺资源。
关于c - 如何确定用 "register"说明符定义的变量是否存储在 CPU 寄存器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36937570/