编译一段程序,编译过程中报错
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
网上有结论说是缺少分号造成,但是根据提示,说是有两种或多种类型在声明的标识符中,经过检查,发现有两处冲动代码是这样定义的:
-
//ksptype.h 17
-
typedef char BOOL ;
-
-
//odbcinst.h
-
#define BOOL int
-
原来是定义了相同的BOOL类型冲突导致的,在引用第三方库的同时,有些基础类型定义容易引起冲突,对于已经成规模的产品代码不容易修改,如果项目代码刚开始,重新定义新的类型还可以调整,到了后期发现这种问题就麻烦多了, 最好在项目验证阶段,就去完成相关验证工作,如果后期万一有冲突,那就使用c++开发吧,通过命名空间修饰避免这种问题。
阅读(5186) | 评论(0) | 转发(0) |