0
只要結構的存儲類不是'static','C'似乎允許初始化函數內的結構成員,嘗試這樣做會返回以下編譯錯誤:結構初始化中的靜態存儲類中的錯誤
error: initializer element is not constant
代碼剪斷
typedef struct data {
int age;
char *name;
} data_t;
void foo(data_t student)
{
//data_t s1 = student; <--- works
static data_t s1 = student; <--- throws error
printf("%s: s1.age: %d, s1.name: %s\n",__FUNCTION__,s1.age, s1.name);
}
欣賞,如果你把一些見解。
你想做什麼?爲什麼你想'靜態',你知道這是什麼意思? – 2013-03-06 07:34:51
我知道被聲明爲「靜態」的變量將被存儲在數據段中,因此它們將通過上下文切換保留它們的值,但我沒有意識到「靜態存儲的對象必須用常量表達式或用C中包含常量表達式的聚合初始值設定項進行初始化「,@meyumer在下面指出。我正在試圖確認我在某處閱讀的內容。 – Amit 2013-03-06 09:42:04