C语言 在使用gnuC进行预处理时如何删除__extension__



我需要使用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不产生这些关键字?

谢谢

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

#define __extension__

然后将__extension__转换为稀薄的空气。

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

此外,这可能会导致删除它引起的其他问题。这仅仅意味着您可能需要使用其他CPP技巧才能使其正常工作。

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

看:https://stackoverflow.com/a/2468655/185460

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

相关内容

  • 没有找到相关文章

最新更新