C语言中的条件编译

C语言中的条件编译

条件编译是指预处理器根据条件编译指令,有条件地选择源程序代码中的一部分代码作为输出,送给编译器进行编译。主要是为了有选择性地执行相应操作,防止宏替换内容(如文件等)的重复包含。

常见的编译命令

条件编译指令 说 明
#if 如果条件为真,则执行相应操作
#elif 如果前面条件为假,而该条件为真,则执行相应操作
#else 如果前面条件均为假,则执行相应操作
#endif 结束相应的条件编译指令
#ifdef 如果该宏已定义,则执行相应操作
#ifndef 如果该宏没有定义,则执行相应操作

常见的结构

#if-#else-#endif 结构
#include<stdio.h>
#define RESULT 0//定义 RESULT 为 0
int main (void)
{
    #if !RESULT //或者 0==RESULT
        printf("It's False!\n");
    #else
        printf("It's True!\n");
    #endif //标志结束#if
        return 0;
}

#ifndef-#define-#endif结构

通过此结构 可以在特定的场景下进行宏定义

#ifndef PI
#define PI 3.1416
#endif

另一个应用,防止头文件引用冲突
当该头文件第一次被包含时,由于没检测到该头文件名对应的符号(宏名)HEADNAME_H,则定义该头文件名对应的符号(宏),其值为该系统默认。并且,该条件编译指令选中 #endif 之前的头文件内容;如果该头文件再次被包含时,由于检测到已存在以该头文件名对应的符号(宏名),则忽略该条件编译指令之间的所有代码,从而避免了重复包含。

如果 f.c 源文件中包含 f1.h 和 f2.h 两个头文件,而 f1.h 头文件及 f2.h 头文件中均包含 x.h 头文件,则 f.c 源文件中重复包含 x.h 头文件。可采用条件编译指令,来避免头文件的重复包含问题。

#ifndef _HEADNAME_H_
#define _HEADNAME_H_
    //头文件内容
#endif

#if-#elif-#else-#endif

类似之前定义的#if-#else-#endif结构 。不再详细说明

补充:C语言中条件表达式真假约束

语言使用0代表假,非0代表真
if(a=0);
就相当于
a=0;
if(a);
就相当于
if(0);
括号中的条件是假

注意: 在linux系统动作的过程中,我们要注意区分。在linux操作系统执行命令的时候,最后的返回结果:0代表成功。 >0,则代表失败。
shell的返回结果正和C语言中返回结果== 相反 ==

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值