使用gnuC进行预处理时如何删除__extension__

时间:2014-03-11 12:12:44

标签: c oracle gnu oracle-pro-c

我需要使用 Oracle pro * C 来处理EXEC SQL声明。但是我在SQL部分中有一些宏要用gnuC预处理来替换。

问题在于,从版本4开始,gnuC预处理会添加__extension__之类的关键字。 pro * C预处理器使用以下消息拒绝__extension__

Syntax error at line 16, column 15, file xxx.ppc:
Error at line 16, column 15 in file xxx.ppc
__extension__ typedef unsigned long long int __u_quad_t;
..............1
PCC-S-02201, Encountered the symbol "typedef" when expecting one of the followin
g:

   ; , = ( [
The symbol ";" was substituted for "typedef" to continue.

如何让gnuC不生成这些关键字?

由于

2 个答案:

答案 0 :(得分:2)

您可以使用C预处理器摆脱__extension__。在包含#include的标题的__extension__之前放置以下内容:

#define __extension__

然后将__extension__转换为空气。

但我不确定它是否有效;我不知道pro * C发生事情的顺序(更具体地说,pro * C和CPP如何协同工作)。

此外,这可能会导致因删除而导致的其他问题。这仅仅意味着您可能必须执行其他CPP技巧才能使其全部正常工作。

答案 1 :(得分:0)

似乎我们几乎可以采用另一种方式:使用参数parse=partial来放宽pro * C要求。

请参阅: https://stackoverflow.com/a/2468655/185460

但在这种情况下,VARCHAR声明中使用的宏不会被替换。 所以问题仍然存在!