在前一阵的项目集成过程中遇到一个__GNUC__引起的编译问题,记录下来。
把项目中的代码进行简化成一个单独的c文件,编译并不报错。把宏定义注释掉,直接改成下面代码则编译通过。
开发平台是linux + oracle proc + database,在编译过程中遇到一个编译错误,报错如下:
...................../ecitype.h
PCC-S-02201, Encountered the symbol "aciub8" when expecting one of the following
:
; , = ( [
The symbol ";"
这个错误是oracle proc报的错误,乍看让人摸不着头脑。观察错误信息,应该是在对
ecitype.h的预处理过程中出现了错误,仔细查看该文件发现报错点
symbol "aciub8"在下面代码附近:
#ifndef __GNUC__
typedef unsigned _int64 aciub8;
typedef signed _int64 acisb8;
#else
typedef unsigned long long aciub8;
typedef signed long long acisb8;
#endif
这是一个条件编译,如果是Linux平台就用 long long 类型表示8字节类型,如果是其他平台则用_int64表示。
把项目中的代码进行简化成一个单独的c文件,编译并不报错。把宏定义注释掉,直接改成下面代码则编译通过。