gpt4 book ai didi

c-preprocessor - #ifdef 和 #ifndef 的作用

转载 作者:行者123 更新时间:2023-12-03 04:55:31 26 4
gpt4 key购买 nike

#define one 0
#ifdef one
printf("one is defined ");
#ifndef one
printf("one is not defined ");

其中 #ifdef#ifndef 的作用是什么,输出是什么?

最佳答案

ifdef/endififndef/endif pair 中的文本将被预处理器保留或删除,具体取决于条件。 ifdef 表示“如果定义了以下内容”,而 ifndef 表示“如果未定义以下内容”。

所以:

#define one 0
#ifdef one
printf("one is defined ");
#endif
#ifndef one
printf("one is not defined ");
#endif

相当于:

printf("one is defined ");

由于定义了 one,因此 ifdef 为 true,ifndef 为 false。它的定义是什么并不重要。。一段类似的(我认为更好)代码是:

#define one 0
#ifdef one
printf("one is defined ");
#else
printf("one is not defined ");
#endif

因为在这种特定情况下更清楚地指定了意图。

在您的特定情况下,由于定义了 one,因此 ifdef 之后的文本不会被删除。出于同样的原因,删除了 ifndef 之后的文本。在某个时刻需要有两个结束 endif 行,第一行将导致行再次开始被包含,如下所示:

     #define one 0
+--- #ifdef one
| printf("one is defined "); // Everything in here is included.
| +- #ifndef one
| | printf("one is not defined "); // Everything in here is excluded.
| | :
| +- #endif
| : // Everything in here is included again.
+--- #endif

关于c-preprocessor - #ifdef 和 #ifndef 的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3744608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com