#ifdef 内的代码包含在运行时还是编译期间?

Sat*_*evi 2 c c++

我正在使用#define ENABLE_FLAG内部 C++ 代码,并相应地尝试包含一段代码,同时ENABLE_FLAG已定义。

我的问题是,里面的特定代码集

#ifdef ENABLE_FLAG
....setofcode....
#endif
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*nck 5

#ifdef#您看到的以 a作为行中第一个字符的所有其他内容都是“C 预处理器指令”。这些甚至在正确编译之前就已处理。因此根本不会做出任何运行时决策——启用/禁用代码块是在构建过程的最早部分决定的。