条件编译的问题,急!!
这是我的头文件
#ifndef head
#define head
struct a1
{
charb1[100];
charb2[2];
}
EXEC SQL BEGIN DECLARE SECTION;
#ifdef DB_DB2_64
struct a2
{
sqlint64 c1;
shortc2;
}
#else
struct a2
{
long c1;
shortc2;
}
#endif
EXEC SQL END DECLARE SECTION;
#endif
因为64的db2要把long转变成sqlint64,所以定义了宏DB_DB2_64。
在连接oracle数据库时,一切正常,在连db2和postgresql时,就报错了。db2报变量重复定义(即#ifdef DB_DB2_64不起作用),而postgresql直接在#ifdef DB_DB2_64这里报语法错。请大侠们教我,先谢谢大家了!!!!
[解决办法]
那你是否
#define DB_DB2_64
了呢?
[解决办法]
原因可能是DB2和Postgres 的 EC 预处理器不支持 #ifdef 预处理指令,不过EC的变量只有INT,SHORT,CHAR,FLOAT,NUMBER,DATE,你的两个结构是为主变量定义的,那就不要放在 EXEC SQL DECLARE 部分,应该就可以通过了!
#ifndef head
#define head
struct a1
{
charb1[100];
charb2[2];
}
#ifdef DB_DB2_64
struct a2
{
sqlint64 c1;
shortc2;
}
#else
struct a2
{
long c1;
shortc2;
}
#endif
EXEC SQL BEGIN DECLARE SECTION;
EXEC SQL END DECLARE SECTION;
#endif
[解决办法]
看你的宏能否区分开不同的平台了