The C Programing Language-2nd--笔记--4.11.3

4.11.3 条件包含

        可用条件语句控制预处理本身,这种条件语句的值是在预处理执行过程中进行计算。这种方式为在编译过程中根据计算所得的条件值选择性地包含不同代码提供手段。

        #if 语句对其中的常量整型表达式(其中不能包含sizeof、类型转换符或enum常量)求值,若该表达式的值不等于0,则包含其后的各行,直到遇到#endif、#elif或#else 语句为止(预处理语句#elif 类else if)。在#if 语句中可用表达式defined(名字),该表达式的值遵循:当名字已定义,其值为1;否则,其值为0。

        例,为保证hdr.h的内容只被包含一次,可将该文件的内容包含在下列形式的条件语句中:

#if !defined(HDR)
#define HDR
/*hdr.h的内容放此处*/
#endif

首次包含hdr.h的内容时,将定义名字HDR;此后再次包含该.h时,该名字已定义,直接跳转到#endif处。类似的方式也可用于避免多次重复包含同一文件。若多个头文件能够一致地使用这方式,那每个头文件都可将它所依赖的任何头文件包含进来,用户不必考虑和处理头文件之间的各种依赖关系。

        以下预处理代码先测试系统变量SYSTEM,后根据该变量的值确定包含哪个版本的头文件;

#if SYSTEM == SYSV
    #define HDR "sysv.h"
#elif SYSTEM == BSD
    #define HDR "bsd.h"
#elif SYSTEM == MSDOS
    #define HDR "msdos.h"
#else
    #define HDR "default.h"
#endif
#include HDR

        C语言专门定义两个预处理语句#ifdef 与#ifndef,用来测试某个名字是否已经定义。上面有关#if的第一个例子可改成:

#ifndef HDR
#define HDR

/*hdr.h文件内容放此*/

#endif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值