首页 /  技术专区  /  C 宽屏模式 >

条件编译关键字——#if

1 #if

(1)基本格式

#if 表达式
...
#endif

表达式为真:保留代码

表达式为假:不保留代码

#if后的“表达式”有两种:

        第一种:为整形常量,或者整形常量表达式

        第二种:为由defined、!defined组建表达式

1)第一种:表达式为整形常量

(a)格式

#if 整形常量,或者整形常量表达式
...
#endif

表达式为真:保留代码

表达式为假:去掉代码

(b)例子

#if 1 //1为真(非零为真),保留代码
...
#endif

当然也可以定义成宏

#define NUM 0  
#if NUM 
...
#endif

#define NUM 0
#if NUM == 1  // 写>  <   >=  <=这些符号都是成立的
...
#endif

可不可以把宏体去掉,#define NUM 0变为#define NUM。

答:不行。

2)第二种:表达式由defined、!defined组建

(a)#if defined

· 基本功能

- 与#ifdef是一样的,这个时候是通过判断宏存不存在来判定真假。

- 例子

#define MACRO

#if defined MACRO //如果定义了这个宏(宏存在),就保留代码
printf("1111111\n");

#endif

· 与#ifdef不同之处

- #ifdef是独立的关键字,但是#if defined是两个两个关键字的组合

- #if defined可以实现宏的“&&、||”运算,但是#ifdef不行 

#define MACRO1 
#define MACRO2

#if defined MACRO1 && defined MACRO2  //如果这两个宏都定义了的话,才保留代码
printf("1111111\n");

#endif

(b)#if !defined

!和defined是两个独立的关键字。

· 功能与#if defined刚好相反,

        宏不存在:为真

        宏存在:为假

· 例子1

#define MACRO

#if !defined MACRO //如果没有定义这个宏(宏不存在),就保留代码
printf("1111111\n");

#endif

· 例子2

#define MACRO1 
#define MACRO2

//只有当这两个宏都没有定义时,才保留代码
#if !defined MACRO1 && !defined MACRO2
printf("1111111\n");

#endif

· defined和!defined也可以混用

#define MACRO1 
#define MACRO2

#if (defined MACRO1 && defined MACRO2) || !defined MACRO3
printf("1111111\n");

#endif

可以按照你自己的要求随意的组合。

(2)与#else 搭配

直接举例讲解。

1)例子1:

#define NUM 0

#if NUM              //0为假,不保留代码
printf("1111111\n");

#else 
printf("2222222\n");

#endif

2)例子2

#define MACRO1 
#define MACRO2

#if !defined MACRO1 && defined MACRO2
printf("1111111\n");

#else                //如果前面的条件不成立,就保留#else后面的代码
printf("2222222\n");

#endif

(3)与#elif 搭配

直接举例演示。

1)例子1

#if 1
printf("1111111\n");

#elif 1
printf("2222222\n");

#endif

2)例子2

#if !defined MACRO
printf("1111111\n");

#elif defined MACRO1
printf("2222222\n");

#endif

3)例子3

#if 0  //#if !defined MACRO
printf("1111111\n");

#elif NUM == 100
printf("2222222\n");

#elif !definedMACRO1 || defined MACRO2
printf("3333333\n");

#else  //#else可以没有
printf("4444444\n");

#endif

#if、#elif、#else、!、defined这些关键字怎么组合使用,完全取决于你自己的想要怎么用。



头像
0/200
图片验证码