5
考慮這段代碼C中的結構和函數範圍有什麼區別?
int main(void)
{
typedef struct {
int i;
} s;
struct {
s s;
} t;
return 0;
}
它編譯罰款。現在就來看看這一個
int main(void)
{
typedef struct {
int i;
} s;
s s;
return 0;
}
該代碼將無法編譯 -
‘s’ redeclared as different kind of symbol.
問題:爲什麼它有正確的「S秒;」作爲一個結構內的聲明,但不正確的定義在函數內?
+1其良好。你認爲這件事會在C標準中提到嗎? –
@ Mr.32是的,他們被提及。我認爲它們實際上被稱爲標識符名稱空間:*「每個結構或聯合體的成員都有一個單獨的名稱 空間(用於通過。或 - >運算符訪問 成員的表達式的類型消歧)」* (從1547年起) – user694733