c - 错误:“不允许不完整的类型”,IAR 编译器

Posted

技术标签:

【中文标题】c - 错误:“不允许不完整的类型”,IAR 编译器【英文标题】:c - Error: "incomplete type is not allowed" , IAR compiler 【发布时间】:2017-03-05 04:58:56 【问题描述】:

请指教,怎么了?

.h

struct 
      uint8_t time;
      uint8_t type;
      uint8_t phase;
      uint8_t status;
 Raw_data_struct;  


typedef struct Raw_data_struct Getst_struct;

void Getst_resp(Getst_struct Data);

.c

void Getst_resp(Getst_struct  Data) //Here Error: incomplete type is not allowed                                        


;

【问题讨论】:

【参考方案1】:

错误是由于声明“struct Raw_data_struct”时的混合造成的。你可以看看typedef struct vs struct definitions [duplicate]的帖子。

要声明你的结构,你必须使用:

struct Raw_data_struct 
  uint8_t time;
  uint8_t type;
  uint8_t phase;
  uint8_t status;
;

而不是:

struct 
  uint8_t time;
  uint8_t type;
  uint8_t phase;
  uint8_t status;
 Raw_data_struct;

如果你想同时声明struct和typedef,你必须使用:

typedef struct Raw_data_struct 
  uint8_t time;
  uint8_t type;
  uint8_t phase;
  uint8_t status;
 Getst_struct;  

【讨论】:

以上是关于c - 错误:“不允许不完整的类型”,IAR 编译器的主要内容,如果未能解决你的问题,请参考以下文章

IAR编译错误总结

keil编译没有显示未定义,但是iar显示

尝试创建指针数组时不允许不完整类型

IAR Embedded Workbench:为什么我会收到链接器错误[Li005]?

用IAR软件编译过的程序怎么转变下才能在STVD软件下编译

这是IAR的Dmp程序,我移到keil后出现这么多错误,解决不了,在iar是可以编译成功的