【发布时间】:2011-07-07 18:12:19
【问题描述】:
C中的预处理指令#if和普通的if有什么区别?我是C的新手。
【问题讨论】:
-
你在问预处理器是做什么的吗?你问它是如何工作的?你到底在问什么?
-
我想知道预处理器是怎么做的!!!
标签: c if-statement c-preprocessor
C中的预处理指令#if和普通的if有什么区别?我是C的新手。
【问题讨论】:
标签: c if-statement c-preprocessor
预处理器if 允许您在将代码发送到编译器之前对其进行条件处理。通常用于阻止头代码被添加两次。
编辑,你的意思是 C++,因为它被标记为这样吗? http://www.learncpp.com/cpp-tutorial/110-a-first-look-at-the-preprocessor/
【讨论】:
#if 和if 之间的区别是什么,它来自其他人的来源
预处理器 if 由预处理器处理,作为正在编译的程序的第一步。正常的 if 在程序执行时在运行时处理。预处理器指令用于启用条件编译,根据不同定义的预处理器常量/表达式使用代码的不同部分。普通 if 用于控制执行程序中的流程。
【讨论】:
前面带有# 的语句称为预处理器指令。它们在实际编译代码之前由解析器处理。从使用 Google 的第一次搜索命中 (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);
【讨论】:
int x=1; #if X==1 根本不起作用。