我正在使用Geany IDE,我正试图摆脱代码中的所有 #ifdef和#ifndef的。有超过1000次出现,它们是嵌套的,不可能手动完成。
以下是一个例子:
#define EXPLAIN
#ifndef EXPLAIN
...
#endif
...
#ifdef EXPLAIN
...
#else
...
#endif
某处条件 #ifdef ,某处 #ifndef 。你明白了......有没有一种简单的方法可以用所有相应的代码摆脱它们?
如果需要,我会下载并安装任何其他软件。
答案 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
指令。它将指令和它们所定界的其他文本从文件中删除,否则保留 文件。