2010-01-13 24 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++没有。