在线C++预处理器

21

我有:

  1. 大量包含复杂宏定义的C++代码(#define bla bla ...)
  2. 宏定义的使用(实例化)

我需要:

一个工具(例如在线工具),仅需执行宏定义的实例化(或宏系统),并展示生成的代码。

示例:

输入:

#define AAA(a,b) if ((a) > (b))

AAA(1, f1(10))

输出:

if ((1) > (f1(10)))

1
使用你的编译器:例如,在GCC中,你可以输入gcc -E -P file.c - Kerrek SB
5
为什么会关闭投票?这是一个与编程有关的问题! - Narek
关闭投票是针对重复的问题。 - Luchian Grigore
2
这不是重复的!我已经提到了与你提到的Luchian Grigore不同之处。 - Narek
1
@KerrekSB 有时候你需要使用C预处理器,但是你没有安装任何C编译器,比如在使用GLSL时(https://dev59.com/ln3aa4cB1Zd3GeqPhsJG#69140739)。 - Suma
显示剩余4条评论
1个回答

15

gcc 选项为 -E,然后是您的文件名。

使用 MSVC 的 cl.exe,解决方案也是/E


已添加,并对打字错误表示抱歉,我曾经将选项写成了“-e”。 - Marcus Riemer
谢谢,但我仍在处理一个非常大的项目,我只需要预编译一个小片段。没有更快的方法吗? - Narek
@Narek 将代码片段复制到一个空的 tmp.c 文件中,然后在终端运行 gcc -E tmp.c 命令。 - elomage
24
好的回答。想要补充一下,如果你想在网上运行它,只需访问http://coliru.stacked-crooked.com/,在命令行中添加“-E”并删除“&& a.out”。 - Predelnik
2
@Predelnik,感谢您是唯一一个实际回答了OP的问题,而不像其他人一样给出“不要这样做”的答案。 - Sonic Atom
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接