预处理器指令#if
与 C 中的正常if
有何区别?我是 C 的新手。
答案 0 :(得分:20)
在它们前面带#的语句称为预处理程序指令。在实际编译代码之前,它们由解析器处理。从第一次使用Google搜索(http://www.cplusplus.com/doc/tutorial/preprocessor/):
预处理程序指令是程序代码中包含的行,它们不是程序语句,而是预处理程序的指令。这些行总是以井号(#)开头。预处理程序在实际编译代码开始之前执行,因此预处理程序在语句生成任何代码之前摘要所有这些指令。
所以#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);
答案 1 :(得分:5)
预处理器if
允许您在将代码发送到编译器之前对其进行调节。通常用于阻止标题代码被添加两次。
编辑,你的意思是C ++,因为它被标记为? http://www.learncpp.com/cpp-tutorial/110-a-first-look-at-the-preprocessor/
答案 2 :(得分:3)
预处理器if由预处理器处理,作为正在编译的程序的第一步。执行程序时,在运行时处理正常if。预处理程序指令用于启用条件编译,根据不同的已定义预处理程序常量/表达式使用代码的不同部分。普通if用于控制执行程序中的流程。
答案 3 :(得分:-1)
预处理程序指令检查宏,换句话说,#define指令并在定义时替换定义。因此只检查宏变量。这是在预处理阶段执行的。
正常if或控制流令牌,如果检查具有变量或函数的条件返回值。此检查在执行期间完成。