#ifdef中的代码包含在运行时或编译过程中?

时间:2013-10-13 02:08:40

标签: c++ c

我在C ++代码中使用#define ENABLE_FLAG并相应地尝试包含一段代码,同时定义了ENABLE_FLAG

我的问题是,

中的特定代码集
#ifdef ENABLE_FLAG
....setofcode....
#endif

在运行时通过#ifdef检查进行评估,或编译器在编译期间看到ENABLE_FLAG并包含代码?

2 个答案:

答案 0 :(得分:4)

#ifdef以及使用#作为第一个字符的所有其他内容都是“C预处理程序指令”。这些都在编译之前处理。因此根本不会做出运行时决策 - 启用/禁用代码块是在构建过程的最早阶段决定的。

答案 1 :(得分:2)

#define设置是编译时间,并在运行时保持不变。