c语言中常见的条件编译指令

一、常见的条件编译指令

1、#if:如果条件为真,则执行相应的操作。
2、#elif:类似于 elseif 的用法,当前面条件为假,再判断该条件是否为真,如果是真,则执行相应操作。
3、#else:如果前面所有条件均为假,则执行相应操作。
4、#ifdef:如果该宏已定义,则执行相应操作。
5、#ifndef:如果该宏没有定义,则执行相应操作。
6、#endif :结束对应的条件编译指令。(不能省略)

二、条件编译指令的用法

1、#if,#elif,#else与#endif

首先上代码

#include <stdio.h>
#define JUD1 1
#define JUD2 0

int main()
{
	int a = 0;
#if JUD1
	printf("%d\n", a + 1);
#elif JUD2
	printf("%d\n", a + 2);
# else 
	printf("%d\n", a + 3);
#endif
	return 0;
}

调用格式为:
#if 条件判断1
 代码段1
#elif 条件判断2
 代码段2
#else
 代码段3
#endif

 
  上述代码通过运行可以发现输出了1,其中#if会首先判断JUD1是否为真(非0),如果是真就会执行相应操作,然后跳到#endif。但如果不是真或者JUD1未定义就会跳到第二个判断条件处再进行判断,如果为假则判断下一个条件。#elif和#else可以按照需求增删,需要注意的是只会选择一条操作执行,且如果对应条件未定义则为假。

2、#ifdef与#endif

   #ifdef与#endif主要功能是判断是否定义了该标识符,若果定义了就会执行相应操作(即使该标识符为假也会执行相应操作)。

其调用格式为:
#ifdef 标识符名
 代码段
#endif

对应代码为:

#include <stdio.h>
//#define JUD

int main()
{
	int a = 0;
#ifdef JUD
	printf("%d\n", a + 1);
#else
	printf("%d\n", a + 2);
#endif
	return 0;
}

  上述代码最终输出的是2,因为JUD并没有定义,所以不会执行#idedf,执行的是#else所以最终结果为2。

3、#ifndef与#endif

   #ifndef和#endif的功能与#ifdef和#endif的功能类似,是用于判断是否定义了该标识符, #ifndef表示的是如果没有定义标识符则会进行相应操作。

其调用格式为:
#ifndef 标识符名
 代码段
#endif

  • 值得一提的是#ifndef还能用于检测到没有定义标识符时对其进行定义。
    其调用格式为:
    #ifndef 标识符名
     代码段1
    #define 定义标识符
     代码段2
    #endif

    当未定义标识符时会执行代码段1,然后对标识符进行定义然后执行代码段2。反之如果已经定义了标识符则不会执行代码段1和代码段2。

代码如下

#include <stdio.h>
//#define JUD

int main()
{
	int a = 0;
#ifndef JUD
	printf("%d\n", a + 1);
#define JUD  2
	printf("%d\n", JUD);
#endif
	return 0;
}

  最终输出的结果是1和2。

  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值