C++ 递归删除预处理器宏
我有一个用C/C++混合代码编写的程序的源代码树。出于调试目的,我希望能够在整个树上(递归地)运行命令行工具,如C++ 递归删除预处理器宏,c++,c,building,C++,C,Building,我有一个用C/C++混合代码编写的程序的源代码树。出于调试目的,我希望能够在整个树上(递归地)运行命令行工具,如unifdef,以从所有源文件中删除一组特定的#ifdef/#endif宏 我想知道是否有什么具体的方法可以让我以一种有效的方式来做这件事。感谢您的帮助。我已使用以下命令解决了此问题: find-名称'*.c'-o-name'*.h'-o-name'*.cpp'-o-name'*.hpp'-exec unifdef-o'{}{};'使用带有-exec选项的find命令对资源树中的所有文
unifdef
,以从所有源文件中删除一组特定的#ifdef/#endif
宏
我想知道是否有什么具体的方法可以让我以一种有效的方式来做这件事。感谢您的帮助。我已使用以下命令解决了此问题:
find-名称'*.c'-o-name'*.h'-o-name'*.cpp'-o-name'*.hpp'-exec unifdef-o'{}{};'
使用带有-exec
选项的find
命令对资源树中的所有文件执行命令。不存在“混合C/C++代码”。单个源文件只能是C或C++。C++编译器不能编译C代码。如果定义了符号,则将编译#ifdef
指令中的代码。为什么不能定义(或取消定义)makefile/build脚本中的符号?@beeselmane大多数编译器都有一个选项,可以将预处理器的输出保存到文件中。因此,使用该选项编译代码。另请参见。