1
常數初始化是什麼在以下方面的區別:與C++
#include <iostream>
using namespace std;
int get_value(int value){
return 3 * value;
}
int main(int argc, const char * argv[])
{
const int a = 5;
const int b = get_value(4);
return 0;
}
那是const int的一個存儲在BSS部分和const int的B中的唯一區別是不是和這兩個仍在執行在編譯器方面。
因此,因爲存儲在bss中它是否更快?作爲一個const編譯時間計算,這是constexpr的用例嗎?會constexpr使B常量存儲在BSS部分?
布萊爾
該語言沒有提到最終可執行文件的佈局;編譯器動態分配這兩個參數並確保它們被自動釋放(這是「自動存儲持續時間」中的「自動」來自哪裏)對於編譯器來說是完全有效的。當然,這樣做會很浪費,也很愚蠢。如果你擔心這個問題,請參考你的編譯器的文檔並查看輸出。 – GManNickG
與GManNickG的回答相反,編譯器優化兩個變量以使它們不存儲在任何地方也是完全可以接受的。 GManNickG是正確的唯一方法來回答這個問題是檢查你的編譯器/鏈接器的輸出。 C++語言沒有提到這些問題。 – john