我使用C++進行編程,希望使用靜態常量變量而不是宏來表示魔法值。在該實例中:static const variable as macro
static const int myx = 10;
int incbyx(int y){
return y + myx;
}
直接生成的組件,使用該值10:
103ec8: e283300a add r3, r3, #10
但是我看到變量仍然在存儲器中佔有的空間。我來到這個結論通過使用objdump的使用--syms選項:
001059a8 l O .data 00000004 myx
我不明白這樣做的必要性,因爲變量本身不會被引用。我可以指示編譯器/鏈接器不要在數據節中保存空間嗎?或者你有沒有其他建議不涉及宏?
您是否啓用優化進行編譯? –
調試或發佈版本,如果發佈什麼樣的優化級別?如果調試構建您爲什麼期望這種優化發生? –
感謝您的快速響應!是的,我正在編譯與調試和-O0。刪除了調試標誌,並與O2和問題完全消失!對於noob問題抱歉! – joseCM