QT / mingw - struct中的struct

时间:2014-02-27 22:58:05

标签: qt

我有以下c程序在Visual Studio下编译但在QT 5.2中失败。

#include <stdio.h>

struct structA
{
    int x;
    struct structB
    {
        int d;
    } y;
};

int main(int argc, char *argv[])
{
    struct structA ad;
    struct structB ab;
    return 0;
}

我在QT中遇到的错误是

error: aggregate 'structB ab' has incomplete type and cannot be definedstruct structB ab;

为什么这在Visual Studio中工作而不是QT的任何想法?

1 个答案:

答案 0 :(得分:1)

当我将代码粘贴到文件中并使用GCC(与MinGW或多或少相同的工具链)在Mac上编译时,我会收到您报告的错误。我可以通过更改代码来消除错误:

#include <stdio.h>

struct structA
{
    int x;
    struct structB
    {
        int d;
    } y;
};

int main(int argc, char *argv[])
{
    struct structA ad;
    // Tell the compiler where to find structB
    struct structA::structB ab;
    return 0;
}

错误消息是正确的,我的意思是没有正确声明structB类型,并且确实需要使用作用域使其可见。

我不确定它是如何在Visual Studio下编译的。我尝试将相同的代码粘贴到Windows上的文件中并使用MSVC 2012进行编译,我收到了此错误:

C:\Users\sarah_000\depot\structs\main.cpp:15: error: C2079: 'ab' uses undefined struct 'main::structB'

在Windows上,我必须进行相同的更改才能进行编译。您确定两种情况下的代码都相同吗? Visual Studio可能没有“使用”或其他作用域操作符帮助添加?