【发布时间】:2013-10-25 20:15:18
【问题描述】:
我想定义一个宏,它可以将另一个宏作为参数,如果没有定义则返回0,如果是则返回1
预处理器有一个称为defined 的操作符,它正是这样做的,但它只在#if 指令中可用。我想知道我是否可以在 #if 之外以某种方式公开此功能,例如在一行 C++ 代码的中间。
这一般可以吗,如果可以,怎么做?
【问题讨论】:
-
您必须知道预处理器将任何未定义的宏视为错误。如果您真正需要的只是条件编译,则可以依赖它。
-
据我了解,您正在尝试检查是否在运行时定义了宏,但宏在预处理(编译前)时被扩展,所以这是不可能的。
-
实际上,我想在编译时使用它。宏将在编译时在命令行上定义。我只是不想为每个可能定义的变量添加一个新的宏块。
-
@merlin2011 你不能那样做。 (幸运?不幸?)
-
@merlin2011 您是否研究过在编译器的命令行上为宏定义值的能力(然后您总是会使用显式值 0 或 1 指定宏)?我不确定这是否会更容易,但不知道您的最终目标或编译器,如果您尚未考虑,这可能适合您的需求。
标签: c++ macros c-preprocessor