【问题标题】:Expand define macro with include macro使用包含宏扩展定义宏
【发布时间】:2015-05-26 17:58:42
【问题描述】:

我正在尝试定义一个宏。这个想法是,当它扩展时,它将包含一个标题。例如:

#define function() \
                   include <CustomHeader.h>

非常感谢。

【问题讨论】:

  • 你到底想用这个实现什么?为什么它需要是一个宏?
  • 你不能完全这样做,因为宏不能产生预处理指令。如果您描述了您要解决的问题,也许会有不同的解决方案。

标签: c++ c macros include


【解决方案1】:

正如其他人所指出的,您不能从宏中生成指令。

但是,您可以从宏生成 参数来 指令:

#define INCF(F) INCF_(F)
#define INCF_(F) #F
#define BAR foo.h

#include INCF(BAR)  // same as #include "foo.h"

但是你不能去掉那个显式的#include,或者把它插入到不同行的中间,或者类似的东西。

【讨论】:

    【解决方案2】:

    这是做不到的。

    生成的完全被宏替换的预处理标记序列不会作为预处理指令处理,即使它类似于一个,[...]

    该引用来自最近的 C++ 标准草案,但措辞略有变化,相同的基本思想几乎永远存在。

    【讨论】:

      猜你喜欢
      • 2017-12-04
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多