引入外部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
的最小副本。请参阅。代码是否编译,如果不编译,具体的编译器错误是什么?只是“下面的红线”可能是您正在使用的任何智能编辑器的产物。编辑问题以提供一个答案。