编译报错 two or more data types in declaration specifiers

5250阅读 0评论2014-09-18 tansijie
分类:C/C++

编译一段程序,编译过程中报错
gcc -c srkdb.c  -I/krw/dev/src/include
In file included from /krw/dev/src/include/kspstat.h:17,
                 from /krw/dev/src/include/kspmap.h:18,
                 from /krw/dev/src/include/srkdb.h:3,
                 from srkdb.c:3:
/krw/dev/src/include/ksptype.h:17: error: two or more data types in declaration specifiers
/krw/dev/src/include/ksptype.h:17: warning: useless type name in empty declaration
make: *** [srkdb.o] Error 1

网上有结论说是缺少分号造成,但是根据提示,说是有两种或多种类型在声明的标识符中,经过检查,发现有两处冲动代码是这样定义的:

  1. //ksptype.h 17
  2. typedef char BOOL ;

  3. //odbcinst.h
  4. #define BOOL    int

原来是定义了相同的BOOL类型冲突导致的,在引用第三方库的同时,有些基础类型定义容易引起冲突,对于已经成规模的产品代码不容易修改,如果项目代码刚开始,重新定义新的类型还可以调整,到了后期发现这种问题就麻烦多了, 最好在项目验证阶段,就去完成相关验证工作,如果后期万一有冲突,那就使用c++开发吧,通过命名空间修饰避免这种问题。

上一篇:网络设备驱动基本原理和框架
下一篇:TCP三次握手及四次挥手