本文主要是介绍C语言-预处理指令-#ifdef xx #endif-用于检查宏是否被定义,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 问题一:请你描述#ifdef XX #ifdef 语法和 #ifndef XX #endif 语法?(区别:n)
- ifdef 基本语法:
- ifndef基本语法:
- 问题二:阅读下面代码,看逻辑
- 问题二输出:
- 问题三:和问题二的区别
- 问题三输出:
- 道友:年轻人最容易丢掉的两个最重要的品质:求知的欲望与灵魂世界的丰盈;处理亲密关系的能力。前者可能决定了你的上限,而后者决定你的下限。
问题一:请你描述#ifdef XX #ifdef 语法和 #ifndef XX #endif 语法?(区别:n)
- 当使用
#ifdef XX
时,它会检查是否定义了宏XX
。如果宏XX
已经被定义,则下面的代码块会被编译,否则该代码块会被忽略。
- 而当使用
#ifndef XX
时,它会检查是否未定义了宏XX
。如果宏XX
没有被定义,则下面的代码块会被编译,否则该代码块会被忽略。
- 在这两种情况下,
#endif
用于标记条件编译的结束。只有当满足条件时,#ifdef XX
或#ifndef XX
之间的代码才会被编译。
ifdef 基本语法:
#ifdef XX// 如果宏 XX 已定义,则编译此处的代码
#else// 如果宏 XX 未定义,则编译此处的代码
#endif
ifndef基本语法:
#ifndef XX// 如果宏 XX 未定义,则编译此处的代码
#else// 如果宏 XX 已定义,则编译此处的代码
#endif
问题二:阅读下面代码,看逻辑
#include <stdio.h>
#define DEBUG
int main() {#ifdef DEBUG //如果未定义DEBUG,则不执行下面的printf,//只是前面已经有定义DEBUG,所以下面执行printfprintf("Debug mode is enabled.\n");//(√)#endif#ifndef TEST //因为前面没有定义TEST,//所以再执行下面的“TEST is not defined”printf("TEST is not defined.\n"); //(√)#elseprintf("TEST is defined.\n");//(×)#endifreturn 0;
}
问题二输出:
Debug mode is enabled.
TEST is not defined.
问题三:和问题二的区别
#ifndef TEST //因为前面TEST未定义,所以执行下一句:定义TEST#define TEST
#endif
#include <stdio.h>#define DEBUG#ifndef TEST //如果前面TEST未定义,则在此处定义它#define TEST
#endifint main() {#ifdef DEBUG //这里关注 #ifndefprintf("Debug mode is enabled.\n");#endif#ifndef TEST //因为前面定义了,所以此处执行#else,输出“TEST is defined”printf("TEST is not defined.\n");#elseprintf("TEST is defined.\n");#endifreturn 0;
}
问题三输出:
Debug mode is enabled.
TEST is defined.
道友:年轻人最容易丢掉的两个最重要的品质:求知的欲望与灵魂世界的丰盈;处理亲密关系的能力。前者可能决定了你的上限,而后者决定你的下限。
这篇关于C语言-预处理指令-#ifdef xx #endif-用于检查宏是否被定义的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!