C语言预处理命令之条件编译

5.#elif指令

#elif预管理指令综合了#else和#if指令的效率。

#include<stdio.h>  #define TWO  int main()  {      #ifdef ONE      printf("1\n");      #elif defined TWO      printf("2\n");      #else      printf("3\n");      #endif      return 0;  }

次第很好通晓,最后输出结果是2。

 


上面是局地预管理指令:

4.#else指令

#else指令用于某些#if指令之后,当前面的#if指令的尺码不为真时,就编写翻译#else后面包车型大巴代码。#endif指令将适可而止下边包车型大巴规范块。

#include<stdio.h>  #define DEBUG  int main()  {      #ifdef DEBUG      printf("Debugging\n");      #else      printf("Notdebugging\n");      #endif      printf("Running\n");      return 0;  }

在C语言中,预管理指令是以#号开端的代码行。#号必须是该行除了任何空白字符外的首先个字符。#后是命令关键字,在显要字和#号之间允许存在任性个数的空白字符。整行语句构成了一条预管理指令,该指令将要编写翻译器实行编写翻译从前对源代码做一点调换。

3.#ifdef和#ifndef

#include<stdio.h>  #define DEBUG  int main()  {      #ifdef DEBUG      printf("YES\n");      #endif      #ifndef DEBUG      printf("NO\n");      #ednif      return 0;  }

#ifdefined等价于#ifdef;#if!defined等价于#ifndef

2.#endif指令

#endif用于终止#if预管理指令。

#include<stdio.h>  #define DEBUG 0  int main()  {      #if DEBUG      printf("Debugging\n");      #endif      printf("Running\n");      return 0;  }

是因为程序定义DEBUG宏代表0,所以#if条件为假,不编写翻译前边的代码直到#endif,所以程序直接输出Running。

假定去掉#define语句,效果是一模二样的。

1.#if指令

#if
指令检查实验跟在后头的常量表明式,借使说明式为真,则编译后边的代码,直到出现#else、#elif或#endif结束;不然就不编写翻译。

准则编写翻译指令将决定怎么样代码被编写翻译,哪些是不被编写翻译的。能够依靠表达式的值或然某些特定的宏是不是被定义来确定编写翻译条件。

一声令下用途
#  空指令,无别的成效
#include  包蕴贰个源代码文件
#define  定义宏
#undef  打消已定义的宏
#if  即便给定法则为真,则编写翻译下边代码
#ifdef  假使宏已经定义,则编写翻译上面代码
#ifndef  假使宏未有定义,则编写翻译下边代码
#elif  假诺前边的#if给定条件不为真,当前口径为真,则编译下边代码
#endif  甘休七个#if……#else条件编写翻译块
#error  停止编译并出示错误音讯

相关文章