【问题标题】:cpp: delay #include's until second passcpp:延迟#include直到第二次通过
【发布时间】:2011-09-16 18:56:08
【问题描述】:

在编译它之前,我通过 C 预处理器运行了我的源文件两次,我想将 #include 指令延迟到第二遍。

直觉上,我试过这个,但它不起作用:

##include <zlib.h>

我只需要一个构造,它在预处理后会给出#include mylib

【问题讨论】:

  • 我正在努力想一个想要这样做的原因。关心开导?
  • @cHao:我用的是flex,我想对文件进行预处理,使我能够编写正则表达式,但是文件经过处理后需要再次运行预处理器弯曲。
  • 您能否以预处理器无法识别的格式制作您的包含文件,并让 flex 在执行操作时将它们更改为“正确”格式(假设 flex 更改文件)?由于缺少修改文件或执行条件包含,您可能运气不佳 - 预处理器两次都将使用相同的东西,所以它会在两次运行时做同样的事情。跨度>
  • @cHao:你不明白,我试图预处理 flex 源本身,而不是基于 flex 的解析器的输入。我只需要一个构造,在预处理时会给出“#include mylib”。

标签: include preprocessor


【解决方案1】:

你可以定义一个宏,比如

#define INCLUDE #include

然后,当您包含内容时,请改用宏。

INCLUDE <zlib.h>

至少在 GCC 的预处理器中,这给了我#include &lt;zlib.h&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多