我對C初始值設定項有疑問。如果用戶的初始化,如:運行時C初始值設定項
int a[2] = {1, 3};
在靜態存儲變量
,我明白了(認爲)編譯器提出的是,在ELF文件的.data自動數據。但是當我們在一個函數裏面做一個初始化一個變量的時候會發生什麼?編譯器是否會生成在運行時「填充」該變量的代碼?如果是這樣,爲什麼我們不能這樣做:
struct mystruct {
int x;
int y;
};
int main(){
struct mystruct foo;
foo = {1, 2};
return 0;
}
因爲你可以用';'來終止'main' :-) – ameyCU
_編譯器是否生成在運行時「填充」該變量的代碼?_你爲什麼不問問編譯器它是什麼呢?編譯一個簡單的函數並查看編譯器生成的程序集。 – mah
@ameyCU不,你不能。 :-) – Downvoter