我有一个标题,它包含一个结构原型:
struct UserDataStruct;
标题的源文件包含并包含标题和:
struct UserDataStruct
{
int instance;
};
在我的主要源文件中,我有:
int main ()
{
UserDataStruct lol;
return 0;
}
我似乎无法编译我的程序,因为Visual Studio 2010给了我一个错误:
error C2079: 'lol' uses undefined struct 'UserDataStruct'
我该如何做到这一点?
答案 0 :(得分:2)
UserDataStruct
的完整定义需要在创建它的实例之前完成。在这种情况下,前向声明是不够的。
只需将结构定义从.cpp文件移动到标题。
答案 1 :(得分:0)
这不起作用;结构需要在main()中完全知道;您必须将结构的完整声明放在头文件中,然后将其包含在主.c文件中。
如果在其他头文件中使用指针,则只能转发声明结构/联合/类(因为这就是你正在做的事情)。但最终您必须在.c文件中提供完整的声明。你不能“隐藏”你结构的内部。