结构原型

时间:2013-01-04 02:56:35

标签: c++ visual-studio-2010 header-files code-organization

我有一个标题,它包含一个结构原型:

struct UserDataStruct;

标题的源文件包含并包含标题和:

struct UserDataStruct
{
    int instance;
};

在我的主要源文件中,我有:

int main ()
{
    UserDataStruct lol;

    return 0;
}

我似乎无法编译我的程序,因为Visual Studio 2010给了我一个错误:

error C2079: 'lol' uses undefined struct 'UserDataStruct'

我该如何做到这一点?

2 个答案:

答案 0 :(得分:2)

UserDataStruct的完整定义需要在创建它的实例之前完成。在这种情况下,前向声明是不够的。

只需将结构定义从.cpp文件移动到标题。

答案 1 :(得分:0)

这不起作用;结构需要在main()中完全知道;您必须将结构的完整声明放在头文件中,然后将其包含在主.c文件中。

如果在其他头文件中使用指针,则只能转发声明结构/联合/类(因为这就是你正在做的事情)。但最终您必须在.c文件中提供完整的声明。你不能“隐藏”你结构的内部。