首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >预处理器指令#if和normal if之间的区别

预处理器指令#if和normal if之间的区别
EN

Stack Overflow用户
提问于 2011-03-03 10:38:43
回答 3查看 15.8K关注 0票数 25

预处理器指令#ifC中的普通if有什么不同?我是C的新手。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-03 10:47:37

前面带有#的语句称为预处理器指令。它们在实际编译代码之前由解析器处理。从使用谷歌(http://www.cplusplus.com/doc/tutorial/preprocessor/)的第一次搜索命中开始:

预处理器指令是包含在我们的程序代码中的行,它们不是程序语句,而是预处理器的指令。这些行的前面总是有一个散列符号(#)。预处理器是在代码的实际编译开始之前执行的,因此,在语句生成任何代码之前,预处理器会消化所有这些指令。

所以一个#if将在编译时决定,一个“正常”的if将在运行时决定。换句话说,

代码语言:javascript
复制
#define TEST 1
#if TEST
printf("%d", TEST);
#endif

将编译为

代码语言:javascript
复制
printf("%d", 1);

如果相反,你写了

代码语言:javascript
复制
#define TEST 1
if(TEST)
printf("%d", TEST);

该程序实际上会编译为

代码语言:javascript
复制
if(1)
printf("%d", 1);
票数 27
EN

Stack Overflow用户

发布于 2011-03-03 10:43:36

预处理器if允许您在将代码发送到编译器之前对代码进行条件调整。通常用于阻止头代码被添加两次。

编辑,你的意思是C++,因为它被这样标记了吗?http://www.learncpp.com/cpp-tutorial/110-a-first-look-at-the-preprocessor/

票数 6
EN

Stack Overflow用户

发布于 2011-03-03 10:44:03

预处理器if由预处理器作为正在编译的程序的第一步来处理。正常的if是在程序执行时在运行时处理的。预处理器指令用于启用条件编译,根据不同定义的预处理器常量/表达式使用不同的代码部分。普通if用于控制执行程序中的流程。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5176065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档