在编译的时候出现这个错误,然后去查找对应的代码段,发现是在使用枚举类型的时候报错!
原因: 定义的enum结构体与其它处的宏定义有冲突。
比如
a.h中:
....
#define TRUE 1
…
b.h中:
…
typedef enum
{
FALSE=0,
TRUE=1
}bool;
…
x.c中:
#include "a.h"
#include "b.h"
…
编译x.c文件会出现上述错误
看字面意思上讲是因为对一个数值常量传递数字,后来在网上一搜,果然是的。因为该枚举类型和宏重名了。当然会报错。
看建议是少用宏,C++中还可以用namespace指定作用域来将其区别开。
有时候头文件上下包含位置调换一下也能解决问题。