假设我们有原始源文件,其中包含#ifdef条件内的代码块和另一个手动“预处理”的文件,因此包含了一些代码块,其他代码块已被删除。我怎样才能看到不是来自#ifdef
的修改?
例如,原始文件可能是:
#ifdef X
blabla1
#else
blabla2
#endif
,修改后的文件为:
blabla2
new line
我只想检测是否添加了new line
。
有没有工具或简短的方法来做到这一点?如果我事先知道X
是否被定义,我可以用unifdef
删除不相关的代码,但在这种情况下我不知道它,一旦有很多变量,尝试所有可能的组合是不可行的。
我认为一种方法是通过diff
来识别差异,然后检查差异是否在ifdef中,但这似乎并不容易实现。
答案 0 :(得分:0)
您可以尝试使用扩展所有预处理器输入的gcc -E
。因此,如果您想尝试扩展一些包含#ifdef X
和#ifdef Y
的文件,您可以使用:
gcc -E -DX -DY [filename] | clang-format
。
clang-format
也应该为你排除空行。
您也可以尝试使用unifdef
代替gcc -E
,然后您可以在手册页中查找您需要的选项。