C语言编译报错conflicting types for 'post_report_cmd
时间: 2024-11-24 19:23:02 浏览: 7
Android 出现问题Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER解决办法
在C语言中,遇到"conflicting types for 'post_report_cmd'"这样的错误通常是由于函数原型声明和定义之间存在不一致导致的。这个错误提示意味着编译器发现了一个名为`post_report_cmd`的标识符,在某个地方有两个不同的类型定义。
例如,如果你在一个头文件(h.h)中声明了一个函数:
```c
// h.h
typedef void (*report_cmd)(void);
extern report_cmd post_report_cmd;
```
然后在另一个源文件(s.c)中不小心又定义了它,但使用了不同的返回类型:
```c
// s.c
void some_other_func() {
// 这里将post_report_cmd误定义为了void类型
void post_report_cmd();
}
```
当这两个部分被链接在一起时,就会发生冲突,因为`post_report_cmd`的类型在`s.c`中被声明为`void`,而在`h.h`中是`report_cmd`指针。
解决这个问题的方法是确保在整个项目中对`post_report_cmd`类型的定义保持一致。如果需要改变类型,应该在所有引用它的地方都做相应调整,并且避免在头文件中既声明又定义函数。
阅读全文