我在C++代码中使用#define ENABLE_FLAG
并相应地试图包含一段代码,而ENABLE_FLAG
被定义。#ifdef内部的代码是否包含在运行时或编译期间?
我的问题是,里面
#ifdef ENABLE_FLAG
....setofcode....
#endif
组特定的代码通过#ifdef
检查在运行时进行评估或编译期间编译器本身看到ENABLE_FLAG
和包括代码?
我在C++代码中使用#define ENABLE_FLAG
并相应地试图包含一段代码,而ENABLE_FLAG
被定义。#ifdef内部的代码是否包含在运行时或编译期间?
我的问题是,里面
#ifdef ENABLE_FLAG
....setofcode....
#endif
组特定的代码通过#ifdef
检查在运行时进行评估或编译期间编译器本身看到ENABLE_FLAG
和包括代码?
#ifdef
和你看到的所有其他东西,#
作为第一个字符就是“C预处理器指令”。甚至在编译正确之前处理这些内容。因此,根本不会有运行时决策 - 启用/禁用代码块在构建过程的最早阶段决定。
#define
设置是编译时间,并在运行时间保持不变。
因为'#' – aaronman
因为我以前从来没有见过这个“功能” - 显然用#开始一行代码使它成为巨大的标题文本,即使#和后面没有空格也是如此线本身很长。谁知道。 –