CPP - 自动删除#ifdef和#ifndef的

时间:2017-04-30 12:45:32

标签: c++ ide

我正在使用Geany IDE,我正试图摆脱代码中的所有 #ifdef和#ifndef的。有超过1000次出现,它们是嵌套的,不可能手动完成。

以下是一个例子:

#define EXPLAIN

#ifndef EXPLAIN
...
#endif
...
#ifdef EXPLAIN
...
#else
...
#endif

某处条件 #ifdef ,某处 #ifndef 。你明白了......有没有一种简单的方法可以用所有相应的代码摆脱它们?

如果需要,我会下载并安装任何其他软件。

2 个答案:

答案 0 :(得分:2)

一个好的解决方案是使用仅运行预处理器的-E标志运行gcc。以下命令:

gcc -E -D EXPLAIN file.cpp -o file.i

预处理file.cpp并输出file.i,它是使用定义的EXPLAIN宏预处理的file.cpp。

一些有用的标志,如果你想产生一个通常更具可读性且更接近输入文件的输出文件:

  • -D NAME定义带有定义1的宏NAME
  • -fdirectives-only处理指令但不处理宏。
  • -C保留评论。
  • -P禁止行标记。

即使使用这些标记,#include也将替换为包含预处理的文件。你可以通过简单地删除#include,预处理输入文件,然后在输出文件中添加#include来解决这个问题。

来源:Using the GNU Compiler Collection (GCC): Preprocessor Options

答案 1 :(得分:0)

您可以使用unifdef来实现。

  

unifdef实用程序选择性地处理条件C预处理程序   #if#ifdef指令。它将指令和它们所定界的其他文本从文件中删除,否则保留   文件。