我需要使用 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不生成这些关键字?
由于
答案 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
声明中使用的宏不会被替换。
所以问题仍然存在!