我在C ++代码中使用#define ENABLE_FLAG
并相应地尝试包含一段代码,同时定义了ENABLE_FLAG
。
我的问题是,
中的特定代码集#ifdef ENABLE_FLAG
....setofcode....
#endif
在运行时通过#ifdef
检查进行评估,或编译器在编译期间看到ENABLE_FLAG
并包含代码?
答案 0 :(得分:4)
#ifdef
以及使用#
作为第一个字符的所有其他内容都是“C预处理程序指令”。这些都在编译之前处理。因此根本不会做出运行时决策 - 启用/禁用代码块是在构建过程的最早阶段决定的。
答案 1 :(得分:2)
#define
设置是编译时间,并在运行时保持不变。