C语言学习笔记(二)-- C语言条件编译用法简介(#if,#elif,#else,#ifdef,#ifndef,#endif)

        C语言条件编译(conditional compiling)命令指定预处理器依据特定的条件来判断保留或删除某段源代码。例如,可以使用条件编译让源代码适用于不同的目标系统,而不需要管理该源代码的各种不同版本。

        条件编译区域以 #if、#ifdef 或 #ifndef 等命令作为开头,以 #endif 命令结尾。条件编译区域可以有任意数量的 #elif 命令,但最多一个 #else 命令。   

        预编译指令1:#if,#elif,#else,#endif

#if 常量表达式1
// ... codes 1

#elif 常量表达式2
// ... codes 2

#elif 常量表达式3
// ...

#else
// ... statement

#endif

        常量表达式可以是包含宏、算术运算、逻辑运算等等的合法C常量表达式。预处理器会依次计算条件表达式,直到发现结果非 0(也就是 true)的条件表达式。预处理器会保留对应组内的源代码。如果找不到值为 true 的表达式,并且该条件式编译区域中包含 #else 命令,则保留 #else 命令组内的代码。在预处理阶段结束时,没有被预处理器保留的代码会从程序中全部删除,不参与编译。

        预编译指令2:#ifdef,#ifndef,#elif,#else,#endif

        条件编译中相对常用的预编译指令

#ifdef HDL_XXX
// ... codes while definded HDL_XXX

#elif (HDL_XXX_ENALBE == HDL_ON)
// ... codes while HDL_XXX_ENALBE == HDL_ON

#else
// ... remained cases

#endif // #ifdef HDL_XXX

       预编译指令3:#if defined,#if !defined

        可用于在一条判断语句中声明多个判别条件;#ifdef和#ifndef则仅支持判断一个宏是否定义。如果是判断单个条件,#if defined和#ifdef没有差别。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值