msc*_*msc 5 c cpu-registers register-keyword
我想知道,我们如何确定用register说明符定义的变量是否存储在CPU寄存器中?
基本上,你不能.C标准中没有任何内容可以为您提供控制.
使用该register关键字为编译器提供了一个提示,即该变量可能存储在寄存器中(即允许最快的访问).编译器可以自由地忽略它.每个编译器都可以采用不同的方式接受/拒绝提示.
引用C11,章节§6.7.1,(强调我的)
具有存储类说明符的对象的标识符声明
register表明对对象的访问尽可能快.这些建议有效的程度是实施定义的.
FWIW,大多数现代编译器可以检测最常用的变量,并在需要时将它们分配到实际寄存器中.请记住,CPU寄存器是一种稀缺资源.