结构 sizeof 无法编译

Posted

技术标签:

【中文标题】结构 sizeof 无法编译【英文标题】:Struct sizeof doesn't compile 【发布时间】: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,代码无法编译。 【参考方案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 完成。

以上是关于结构 sizeof 无法编译的主要内容,如果未能解决你的问题,请参考以下文章

20210531-C++面试

20210531-C++面试

20210531-C++面试

OC的动态继承编译机制

结构体和数组传参注意

结构填充编译标志