预处理器指令 #if 和普通 if 之间的区别

发布于 2024-10-19 18:51:52 字数 101 浏览 1 评论 0原文

C 中的预处理器指令 #if 和普通 if 有什么区别?我是C新手。

What is difference between preprocessor directive #if and normal if in C? I'm new to C.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

记忆里有你的影子 2024-10-26 18:51:52

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

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

因此#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);

Statements with # in front of them are called preprocessor directives. They are processed by a parser before the code is actually compiled. From the first search hit using Google (http://www.cplusplus.com/doc/tutorial/preprocessor/):

Preprocessor directives are lines included in the code of our programs that are not program statements but directives for the preprocessor. These lines are always preceded by a hash sign (#). The preprocessor is executed before the actual compilation of code begins, therefore the preprocessor digests all these directives before any code is generated by the statements.

So a #if will be decided at compile time, a "normal" if will be decided at run time. In other words,

#define TEST 1
#if TEST
printf("%d", TEST);
#endif

Will compile as

printf("%d", 1);

If instead you wrote

#define TEST 1
if(TEST)
printf("%d", TEST);

The program would actually compile as

if(1)
printf("%d", 1);
送你一个梦 2024-10-26 18:51:52

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

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

Preprocessor if allows you to condition the code before it's sent to the compiler. Often used to stop header code from being added twice.

edit, did you mean C++, because it was tagged as such?
http://www.learncpp.com/cpp-tutorial/110-a-first-look-at-the-preprocessor/

惜醉颜 2024-10-26 18:51:52

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

The preprocessor if is handled by the preprocessor as the first step in the program being compiled. The normal if is handled at runtime when the program is executed. The preprocessor directive is used to enable conditional compilation, using different sections of the code depending on different defined preprocessor constants/expressions. The normal if is used to control flow in the executing program.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文