【问题标题】:gcc compile error invalid application of ‘sizeof’ to incomplete type ‘struct LadoSt’gcc 编译错误“sizeof”对不完整类型“struct LadoSt”的无效应用
【发布时间】:2014-05-21 23:50:19
【问题描述】:

我正在为我的大学制作一个项目并使用 MakeFile 编译我的文件我遇到了问题,我有 5 个文件: api.c api.h datastruct.c datastruct.h main.c 在主要我有这个函数调用: DovahkiinP new = NuevoDovahkiin(); NuevoDovahkiin() 函数在 api.c 和 DovahkiinP 指向的结构 DovahkiinSt 中定义

函数 NuevoDovahkiin() 在 api.c 中定义如下:

DovahkiinP NuevoDovahkiin(){
    DovahkiinP new_dovahkiin = NULL;
    new_dovahkiin = calloc(1, sizeof(struct DovahkiinSt)); //Here is the problem
    if(new_dovahkiin != NULL){
        new_dovahkiin->root = NULL;
        new_dovahkiin->source = NULL;
        new_dovahkiin->sink = NULL;
        new_dovahkiin->tempflux = 0;
    }
return (new_dovahkiin);
}

在api.h中定义了结构DovahkiinSt:

 typedef struct _DovahkiinSt_t {
        vertex root;
        vertex source;
        vertex sink;
        u64 tempflux;
    }DovahkiinSt;
    typedef DovahkiinSt *DovahkiinP;

在 api.c 和 main.c 中我都有 #include "api.h" 我不明白 sizeof(struct DovahkiinSt) 有什么问题

【问题讨论】:

  • @Oswald 有正确的答案,但您可以通过使用 ptr = calloc(1, sizeof *ptr); 表单完全避免此问题

标签: c gcc compilation compiler-errors sizeof


【解决方案1】:

使用sizeof(DovahkiinSt)sizeof(struct _DovahkiinSt_t)

sizeof(struct DovahkiinSt) 没有意义,因为DovahkiinSt 只是struct _DovahkiinSt_t 的不同名称。

【讨论】:

    猜你喜欢
    • 2019-11-25
    • 2013-04-05
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2018-06-25
    • 1970-01-01
    相关资源
    最近更新 更多