1

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

struct UserDataStruct;

标头的源文件包含并包含标头,并且:

struct UserDataStruct
{
    int instance;
};

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

int main ()
{
    UserDataStruct lol;

    return 0;
}

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

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

我怎样才能使这项工作?

4

2 回答 2

2

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

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

于 2013-01-04T02:59:11.703 回答
0

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

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

于 2013-01-04T03:01:55.800 回答