2013-10-31 40 views
0

我正在开发一个项目,我需要将代码注入C(或C++)文件,并在源代码中给出一些智能注释。注入的代码由外部文件提供。有谁知道任何这样的尝试,并可以指向我的例子 - 当然,我需要保留#行的原始行号。我的想法是用一个脚本代替cpp,然后调用系统cpp。 任何建议将理解扩展C预处理器以注入代码

感谢 丹尼

+0

的Qt以前也称为工具“MOC”或类似的东西,这并像你正在寻找的东西。 (它实际上只是稍微修改了一些C++,然后把它变成了正常的C++,但是,IIRC)。你可能想要做这样的事情,也许可以给你的文件(或者工具的输出)添加一个扩展名,你可以用于触发makefile中的规则。 – cHao

+0

即使在今天,Qt也有它的'moc'(元对象编译器) –

+1

如果它是字面上的代码注入,那么在需要代码注入的地方放置宏调用以及在单独的文件中定义这些宏会出现什么问题? –

回答

0

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

如果主要使用GCC,我会建议您自己注入代码#pragma(不是注释!)。您可以添加自己的GCC插件,或者为此编写自己的MELT扩展(因为GCC插件可以添加杂注和内建函数,但目前不会影响预处理)。

由于Ira Baxter评论,你可以简单地把一些奇怪的宏调用,并在单独的文件中定义这些宏。

我不完全猜测你想要什么样的精确类型的代码注入。

或者,你可以生成C或C++代码,用自己的发电机(这可能发出#line指令)和饲料,为gcc

+0

谢谢。我会看看MELT。 – user1766774