[英]Cannot declare global variable with the name of a struct
結構成員可以使用與類型相同的名稱,但似乎全局變量不能。 有誰知道為什么? 我正在使用 MinGW-64,它是 GNU C 的實現。
typedef struct foo{
}foo;
foo foo;
int main()
{
}
謝謝!
這里的問題相當簡單。 您不能在定義的同一 scope 中重新定義名稱的含義。 相比之下,這將是有效的
typedef struct foo{
char c;
}foo;
int main()
{
foo foo;
}
在main
的 scope 中聲明之后, foo
的含義發生了變化。 但是,當您在與類型別名相同的 scope 中執行此操作時,您基本上提供了相互沖突的定義。
結構字段不在類型定義本身的 scope 中。 所以這就是為什么它們也不沖突。
使用gcc
編譯時,會產生此錯誤:
test.c:5:5: error: ‘foo’ redeclared as different kind of symbol
foo foo;
這就是問題所在。 聲明foo foo;
當符號foo
已被聲明為引用struct foo
時,嘗試將其重新聲明為變量。 您可以通過將變量名稱更改為其他名稱來解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.