C语言“conflicting types”编译错误
快速解答:
啊,看来你也遇到了“conflicting types”——类型冲突编译错误。
如果你不是遇到:
循环引用而没有用宏定义来解决。
声明或定义在调用后面。
声明和定义冲突。
.h.gch
未更新。
那么我想告诉你,你可跟我一样忘了C
语言不支持“函数重载”,即你的函数名不能重复。
所以不是你的类型声明(typedef
)冲突了,而是函数名冲突了。
报错记录
1 | $ mingw32-make.exe test-program |
-std=c99
这个参数是我后加上去。我注意到stdbool.h
中bool
最终指向_Bool
,一想C
语言之前好像没这个东西,就查了一下,是C99
标准中才支持的,所以就加上了,但是错误并不是在这里。
我甚至多次注意到他说的类型冲突所指向的是函数名,甚至有一次开始想“好像C语言是不是不支持函数重名?”,但是直接否定了,然后兜了一圈回来,才查了一下。这才确定了我C
语言白学了啊。
最近好几个C
语言项目编译不通过大概就是因为这个。