2010-01-13 42 views
4

過去一段時間,因爲我已經在C++中使用了結構。使用結構 - 奇怪問題

任何想法,爲什麼這不工作?我的編譯器抱怨DataStruct不被認可的類型,但在智能感知VC++仍然能看到裏面結構中的數據成員,使語法確定...

Frustating。 xD

struct DataStruct 
{ 
    int first; 
}; 



int main(int argc, char **argv) 
{ 
    DataStruct test; 
    //test.first = 1; 
} 

回答

16

你確定你正在編譯文件爲C++嗎?如果將它編譯爲C(即文件的擴展名爲.c而不是.cpp),則會出現問題。

+1

就是這樣。正在使用模板,並沒有注意到它是.c而不是.cpp – bobber205 2010-01-13 20:19:59

+0

這也是我的第一個猜測。上面的代碼是合法的C++,但不是合法的C. – nusi 2010-01-13 20:20:23

+0

只是爲了澄清:Bobber正在討論VC++ IDE模板而不是C++中的模板。 – missingfaktor 2010-01-13 20:28:59

1

您需要使用struct DataStruct來引用結構。

或者,你可以的typedef它作爲DataStruct如果不想使用「結構」無處不在。

+0

非常感謝!不知道爲什麼我不記得這些從以前的類.... xD – bobber205 2010-01-13 20:18:36

+6

不是在C +你不。 – 2010-01-13 20:19:15

+5

這就是爲什麼立即接受修復問題的第一個答案並不是一個好主意。通常,它完全忽略了這一點。 – 2010-01-13 20:22:00

4

您正在編譯爲C代碼。 C要求你使用「Struct」關鍵字或typedef來引用它。 C++沒有。