【发布时间】:2012-02-01 13:20:21
【问题描述】:
我在一个程序中定义了许多调试语句,我希望能够在没有这些语句的情况下制作源代码的副本。
为了做到这一点,我首先查看了 GCC 的 -E 命令行参数,它只运行预处理器,但这远远超出了我的预期,扩展了包含的文件并添加了 #line 语句。
例如:
#include <stdio.h>
#ifdef DEBUG
#define debug( s ) puts ( s );
#else
#define debug( s )
#endif
int main( int argc, char* argv[] )
{
debug( "Foo" )
puts( "Hello, World!" );
return 0;
}
我希望将其处理为:
#include <stdio.h>
int main( int argc, char* argv[] )
{
puts( "Hello, World!" );
return 0;
}
然后我可以用 astyle 之类的东西来整理它,而无需手动工作即可获得我想要的东西。
我是否缺少 GCC 的指令或者是否有工具能够做到这一点?
【问题讨论】:
-
另外,考虑找到与这些行匹配的正则表达式并在您的编辑器中删除它们
-
您可以编写一个非常简单的解析器并覆盖文件。
标签: c gcc c-preprocessor