扩展C预处理器以注入代码

时间:2013-10-31 20:51:22

标签: c-preprocessor

我正在开发一个项目,我需要在源代码中给出一些智能注释,将代码注入C(或C ++)文件。注入的代码由外部文件提供。有没有人知道任何这样的尝试,可以指出我的例子 - 当然我需要用#line保留原始行号。我的想法是用首先执行此操作的脚本替换cpp,然后调用系统cpp。 任何建议将不胜感激

由于 丹尼

1 个答案:

答案 0 :(得分:0)

提供修改后的cpp外部程序通常不会起作用,至少在最近的GCC中,预处理是内部到编译器(因此是cc1的一部分或cc1plus)。因此,大多数GCC编译中不再涉及任何cpp程序(但libcpp是GCC的内部库)。

如果主要使用GCC,我建议您自己注册代码#pragma(不是评论!)。您可以为此添加自己的GCC插件或编写自己的MELT扩展名(因为GCC插件可以添加编译指示和内置函数,但目前无法影响预处理)。

Ira Baxter所述,您可以简单地进行一些奇怪的宏调用,并在单独的文件中定义这些宏。

我并不确切地猜测你需要什么样的代码注入。

或者,您可以使用自己的生成器生成C或C ++代码(可以发出#line指令)并将其提供给gcc