C语言中#elif是什么意思?

Python015

C语言中#elif是什么意思?,第1张

#elif是预处理指令,跟#if等一起用,进行条件编译,比较完整的格式应该是:

#if

条件

表达式

#elif

条件

表达式

………

#else

条件

表达式

#endif

条件和表达式语句间用空格分开

elif相当于else

if,判断中间可以弄n个elif

条件判断完最后一定要加#endif哦!

预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。下面是部分预处理指令:指令用途#空指令,无任何效果#include包含一个源代码文件#define定义宏#undef取消已定义的宏#if如果给定条件为真,则编译下面代码#ifdef如果宏已经定义,则编译下面代码#ifndef如果宏没有定义,则编译下面代码#elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码,其实就是elseif的简写#endif结束一个#if……#else条件编译块#error停止编译并显示错误信息#if……#else……就是预编译,比如:#if1。。。。#else……这里#if1表示此次编译把其下的代码编译进去,如果改为#if0,则表示此次编译把#else后面的代码编译进去,而不是#if0下的代码。#ifTT……#else……TT是一个宏,这里表示如果TT这个宏定义的话,则编译#if下的代码,否则#else下的代码。具体可以参考: http://blog.csdn.net/qiantuo1234/article/details/6976072

条件编译属于三种宏定义中的一种,条件指示符的最主要目的是防止头文件的重复包含和编译,例如:一个c文件包含同一个h文件多次,如果不加#ifndef宏定义,会出现变量重复定义的错误

条件编译常用的有四个预处理命令:#if、#else、#elif、#endif。

#if指令的形式为:

#if 常量表达式

代码块

#endif

#if后面的常量表达式为值,则编译它与#endif之间的代码,否则跳过这些代码。指令#endif标识一个#if块的结束。

#else被使用来标志#if的末尾和#else块的开始。这是必须的,因为任何#if仅有一个#endif与之关联。

#elif意指"else if",它形成一个if else if嵌套语句用于多种编译选择。#elif后面跟一个常量表达式,如果表达式是真,则编译其后的代码块,不对其他#elif表达式进行检测,否则顺序测试下一块。常见的形式如下:

形式1:

#ifdef 标识符

/*程序段 1*/

#else

/*程序段 2*/

#endif

它的作用是当标识符已经由#define定义过了,则编译程序段1,否则编译程序段2,也可以使用简单形式

   #ifdef 标识符

/*程序段1*/

   #endif

形式2:

   #ifndef 标识符

#define 标识符

/*程序段 1*/

#else

/*程序段 2*/

#endif

它的作用是当标识符没有由#define定义过,则编译程序段1,否则编译程序段2 ,也可以使用简单形式

   #ifndef 标识符

#define 标识符

/*程序段 1*/

# endif

形式3:

 #if 表达式

/*程序段 1*/

#else

*程序段 2*/

# endif

它的作用是 当“表达式”值为真时编译程序段1。否则则编译程序段2,也可以使用简单形式

# if 表达式

/*程序段 1*/

# endif

形式4:

    #if 表达式1

    /*程序段 1*/

    #elif 表达式2

    /*程序段 2*/

    ............

    #elif 表达式n

    /*程序段n */

    #endif

  它的作用是当“表达式1”值为1时编译程序段1,表达式2的值为真是编译程序段2,否则依次顺序判断到表达式n。

最后,条件编译的条件是一个常量表达式,支持逻辑与&&和或||运算。以上四种形式的条件编译预处理结构都可以嵌套使用,

标识符: 在理论上来说可以是自由命名的,但每个头文件的这个标识符都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h。

#ifndef _STDIO_H_

#define _STDIO_H_

/*程序段 */

#endif