有没有办法知道编译器在 c 中使用的访问说明符。 例如- 在寄存器变量的情况下,这完全取决于编译器来决定变量的访问说明符是自动还是注册。有没有办法动态地知道编译器选择了什么访问说明符?
最佳答案
我们正在混淆语言的规范级别和机器代码中程序的实现。这里的两个术语“注册”只是松散相关。
关键字 register
的措辞令人困惑,用词不当。 register
仅表示不允许您获取此类变量的地址。无论您的编译器是否在堆栈上实现变量并直接对其寻址或将其存储在 CPU 寄存器中,都不是您可以依赖的稳定因素。它会随着编译器版本和优化级别的不同而变化。
正如其他人所说,如果您对微优化感兴趣,您可以阅读汇编程序以了解特定的编译,但总的来说,您甚至不需要担心。
关于c - 如何知道编译器在c中使用的访问说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6993993/