我想在功能块中找出存储类型的变量。如何检查编译器是否已将提升的自动变量存储提升到寄存器存储,或者编译器是否遵守使用寄存器存储声明的变量?我假设在优化之后看到obj文件的汇编代码会给我们一个想法。请列出我需要使用gcc或cl.exe来获取此信息的开关?
答案 0 :(得分:2)
您可以查看生成的程序集,但无法以编程方式从程序中确定这一点。一般要注意GCC会忽略register
关键字,除非您尝试获取register
存储变量的地址时发出错误,并且与GCC特定扩展一起使用时强制变量进入与内联asm一起使用的特定寄存器。不知道MSVC做了什么。
答案 1 :(得分:2)
gcc中的-S
开关是您正在寻找的。{
见§3.2 Options Controlling the Kind of Output (GCC manual)