首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

条件编译的有关问题,

2012-02-10 
条件编译的问题,急!!这是我的头文件#ifndefhead#defineheadstructa1{charb1[100]charb2[2]}EXECSQLBEGIN

条件编译的问题,急!!
这是我的头文件
#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

[解决办法]
看你的宏能否区分开不同的平台了

热点排行