繁体   English   中英

CPP - 自动删除 #ifdef 和 #ifndef

[英]CPP - Automatically remove #ifdef's and #ifndef's

我正在使用 Geany IDE 并且我正在尝试摆脱代码中的所有#ifdef 和#ifndef 出现次数超过 1000 次,它们是嵌套的,无法手动完成。

这是一个例子:

#define EXPLAIN

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

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

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

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

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

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

如果您想生成一个 output 文件,一些有用的标志通常更具可读性并且更接近输入文件的预期外观:

  • -D NAME用定义 1 定义宏NAME
  • -fdirectives-only处理指令而不是宏。
  • -C保留评论。
  • -P禁止行标记。

即使使用这些标志, #include也会被您包含的预处理文件替换。 您可以通过简单地删除#include 、预处理输入文件,然后在 output 文件中添加#include来解决此问题。

来源:使用 GNU 编译器集合 (GCC):预处理器选项

您可以使用unifdef来实现这一点。

unifdef实用程序选择性地处理有条件的 C 预处理器#if#ifdef指令。 它从文件中删除指令和它们分隔的附加文本,否则将保留文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM