#ifdef #endif #if #endif

c语言里所有以#开头的都是预编译指令,就是在正式编译之前,让编译器做一些预处理的工作。

 

  #ifdef DEBUG

    printf("variable x has value = %d\n",x);

  #endif


#if和#endif是配对的,叫做条件编译指令,如果满足#if后面的条件,就编译#if和#endif之间的程序段,否则不编译。
比如这段程序,如果常量OS_CRITICAL_METHOD的值为3就编译下面的一条语句

#ifdef 和 #if 效果是一样的,但是当你要判断复杂的条件时,只能用 #if

#define BASIC_DEBUG 1
#define EXTRA_DEBUG 2
#define SUPER_DEBUG 4

#if (DEBUG & EXTRA_DEBUG)
printf...
#endif
当DEBUG = 0时,禁止所有调试信息,当DEBUG = 5时将启用BASIC_DEBUG和SUPER_DEBUG,但不包括EXTRA_DEBUG.

另外也可在程序中添加如下语句。这样,当不需要调试时,就不必在命令行上定义DEBUG宏:
#ifndef DEBUG
#define DEBUG 0
#endif

#ifndef x             //先测试x是否被宏定义过,if not define 的缩写。
 
 
#define x
 
 
程序段 1                //如果x没有被宏定义过,定义x,并 编译程序段 1
 
 
#endif
 
 
程序段 2               //如果x已经定义过了则编译程序段2的语句,“忽视”程序段 1。
 

转载于:https://www.cnblogs.com/cj2014/p/3738420.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值