【发布时间】:2013-01-08 18:31:04
【问题描述】:
我有大量的 c++ 源文件,我想通过扩展我指定的单个函数宏来转换它们,并且保留所有其他预处理指令不变。宏的参数通常会涉及括号和大括号以及括号保护的逗号,因此使用 sed 和 kin 执行此操作似乎并不直接。
更新: 我们的代码大量使用宏来生成样板(例如 swig 的帮助代码)。当我们更好地弄清楚如何做某些事情时,各种宏不再做任何非常有趣的事情(例如,只是声明一些函数),许多人抱怨它们使代码更难阅读。我想将不那么有趣的宏扩展为简单的 C++ 代码。
【问题讨论】:
-
我能问一下为什么吗?无论您实际尝试做什么,都可能有更好的策略。
-
未经测试(因此评论不回答)..您可能会运行全局搜索和替换,将
#include更改为//#include,然后运行gcc -E -DWHATEVER并在结果上反转初始搜索和替换......或者编写一个有限的解析器或正则表达式...... -
@johannes:哦,谢谢!我考虑过运行 pp,但没有考虑评论包含... :( 但是您需要评论 all pp 语句才能使其正常工作。
标签: c++ c c-preprocessor