无敌小布
2019-05-20 18:50
采纳率: 100%
浏览 1.0k

keil跨文件调用结构体报错

最近学STM32项目遇到问题。我在a.h定义了结构体 typedef struct{}A 并extern A my_a,在a.c初始化了my_a={参数值}。在c.c中我定义了一个函数 A exp(A _data),c.h中include"a.h",然后声明函数 A exp(A _data)(需要在main()中调用的),这时c.c单独编译通过,但是整体编译生成hex时候就会报APP/c.h(9): error: #20: identifier A" is undefined A A exp(A _data)
真的想不明白 求大佬救助

main.c

#include "a.h"
int main()
{
A Adata;
Adata=fun2(my_a);

}

a.c

#include "a.h"

A my_a={.a=1};

a.h文件

#ifndef _a_H
#define _a_H
#include "c.h"
 typedef struct{
 int a;
 }A;
extern A my_a;
#endif

c.c文件

#include "c.h"
A fun2(A _data)
{

  return _data;
}

c.h文件

#ifndef _c_H
#define _c_H
#include "a.h"
A fun2(A _data);
#endif

错误 .\app\c.h(4): error: #20: identifier "A" is undefined
A fun2(A _data);

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题