引入外部Typedef结构后,.h和.c文件之间的函数声明不兼容
我已经将我的程序分为不同的引入外部Typedef结构后,.h和.c文件之间的函数声明不兼容,c,C,我已经将我的程序分为不同的.c和.h.文件,其中包含.c中的函数和.h文件中的函数原型、结构和类型定义 假设我有car.c和car.h。这些功能包括接收传感器*传感器的功能,但是传感器是来自传感器.h的类型定义结构。因此,我只需编写#在car.h中包含“sensor.h”。现在car.c和car.h都可以访问Sensor,我的IDE似乎证实了这一点 该问题源于功能本身,即传感器*传感器。假设我有void printCarSensors(传感器*sensor1,传感器*sensor2){}。car
.c
和.h.
文件,其中包含.c
中的函数和.h
文件中的函数原型、结构和类型定义
假设我有car.c
和car.h
。这些功能包括接收传感器*传感器
的功能,但是传感器
是来自传感器.h
的类型定义结构
。因此,我只需编写#在car.h
中包含“sensor.h”
。现在car.c
和car.h
都可以访问Sensor
,我的IDE似乎证实了这一点
该问题源于功能本身,即传感器*传感器。假设我有void printCarSensors(传感器*sensor1,传感器*sensor2){}
。car.c
和car.h
都会对传感器*
类型感到满意car.c
会非常高兴,不会有任何错误
但是,car.h
将在printCarSensors
下有一条红线,错误为:
declaration is incompatible with "void printCarSensors(Sensor* sensor1,
Sensor* sensor2) " (declared at line 26 of "C:\Users\user\Desktop
WorkingFiles\car.c")
在sensor.h
中,我会
typedef struct sensor Sensor;
struct sensor{
int time;
int speed;
int acceleration;
int temp;
};
希望所有这些都有意义,我们将非常感谢您的帮助。尝试将typedef放在结构之后,或者最好将其作为typedef结构传感器{…}传感器一起执行;还有,编译器而不是IDE说了什么?来自
car.h
的printCarSensors
的声明是什么?您似乎关注的是由传感器
引起的不兼容,但您怎么知道?我们需要查看再现问题的car.c
、car.h
和Sensor.h
的最小副本。请参阅。代码是否编译,如果不编译,具体的编译器错误是什么?只是“下面的红线”可能是您正在使用的任何智能编辑器的产物。编辑问题以提供一个答案。