预处理器指令#if
和C中的普通if
有什么不同?我是C的新手。
发布于 2011-03-03 10:47:37
前面带有#的语句称为预处理器指令。它们在实际编译代码之前由解析器处理。从使用谷歌(http://www.cplusplus.com/doc/tutorial/preprocessor/)的第一次搜索命中开始:
预处理器指令是包含在我们的程序代码中的行,它们不是程序语句,而是预处理器的指令。这些行的前面总是有一个散列符号(#)。预处理器是在代码的实际编译开始之前执行的,因此,在语句生成任何代码之前,预处理器会消化所有这些指令。
所以一个#if将在编译时决定,一个“正常”的if将在运行时决定。换句话说,
#define TEST 1
#if TEST
printf("%d", TEST);
#endif
将编译为
printf("%d", 1);
如果相反,你写了
#define TEST 1
if(TEST)
printf("%d", TEST);
该程序实际上会编译为
if(1)
printf("%d", 1);
发布于 2011-03-03 10:43:36
预处理器if
允许您在将代码发送到编译器之前对代码进行条件调整。通常用于阻止头代码被添加两次。
编辑,你的意思是C++,因为它被这样标记了吗?http://www.learncpp.com/cpp-tutorial/110-a-first-look-at-the-preprocessor/
发布于 2011-03-03 10:44:03
预处理器if由预处理器作为正在编译的程序的第一步来处理。正常的if是在程序执行时在运行时处理的。预处理器指令用于启用条件编译,根据不同定义的预处理器常量/表达式使用不同的代码部分。普通if用于控制执行程序中的流程。
https://stackoverflow.com/questions/5176065
复制相似问题