2. C语言条件编译

本文详细介绍了C语言中的条件编译技术,包括如何判断宏定义是否存在、如何使用条件编译来控制代码编译的过程、多分支条件编译的应用及预处理指令的嵌套使用。此外还介绍了头文件包含的不同方式、编译错误的触发机制以及断言的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 条件编译

1.1 判断是否被定义

    #define __DEBUG__ 1
    // 如果定义了 __DEBUG__ 宏定义,才会进行接下来的编译
    #ifdef __DEBUG__
    // ==>#if !defined(__DEBUG__)
        语句;
    #endif

1.2 条件编译

    #if 常量表达式(为真编译,为假,不编译)
        语句;
    #endif

1.3 多分支条件编译

    #if 常量表达式
        语句;
    #elif 常量表达式
        语句;
    #elif 常量表达式
        语句;
    #else
        语句;
    #endif

1.4 嵌套指令

  预处理指令可以进行嵌套。

    pragma onec // 防止头文件被多次引用

    #if defined(OS_UNIX)
        #ifdef OPTION1
            unix_version_option1();
        #endif
        #ifdef OPTION2
            unix_version_option2();
        #endif
    #elif defined(OS_MSDOS)
        #ifdef OPTION2
            msdos_version_option2();
        #endif
    #endif

2.其它

2.1 头文件的包含

    #include <filename>
        //直接去库目录下查找
    #include "filename"
        //先查找当前工作目录下查找,然后去库目录查找

2.2 #error “…”

  遇到#error便会产生一个编译错误。

2.3 assert断言

  善用断言,头文件为 assert.h。

    // 当 () 内的条件不成立时触发断言
    assert(i == 1);

  在debug版本中使用,release版本中自动清除,即断言会全部被清除。

相关内容可参考
《C语言深度解剖》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值