【问题标题】:Struct sizeof doesn't compile结构 sizeof 无法编译
【发布时间】:2021-05-19 14:33:42
【问题描述】:

我试图创建两个结构,一个是主要的,他有指向第二个结构的指针。 当我尝试在 main 中使用 sizeof 时,它显示“无法打开文件 C:/...”

typedef struct virus {
    int time;
    zol* x;
};

typedef struct zol {
    int y;
};

void main()
{
    printf("%d", (int)sizeof(virus));
}

【问题讨论】:

  • “无法打开文件”是你编译过程的问题,而不是你的代码问题。
  • 上面的代码有很多问题(比如typedefs,void的返回类型main()),但是你的sizeof(virus)其实没问题。
  • 1) 那些typedef 在 C++ 中既错误又不必要。 2) zol* x; 但此时zol 尚未声明。
  • 这真的是 C++ 吗?代码看起来像纯 C(忽略 C 和 C++ 常见的错误)。
  • @MarekR 作为 C,代码无法编译。

标签: c++ struct typedef sizeof


【解决方案1】:

引用的错误消息(可能)是代码中编译错误的结果。下次您发布错误消息时,请发布第一个错误消息,而不是最后一个。

这里是更正的代码。您的代码的主要问题是您在定义它之前使用了zol,它应该是相反的。 printf 还缺少一个头文件,并且 typedef 错误。

#include <cstdio>

struct zol {
    int y;
};

struct virus {
    int time;
    zol* x;
};

int main()
{
    printf("%d\n", (int)sizeof(virus));
}

【讨论】:

  • 我会添加#include &lt;cstdio&gt;,也许会添加std::printf("%zu", sizeof(virus));
  • @TedLyngmo 完成。
猜你喜欢
  • 1970-01-01
  • 2019-04-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多