c语言条件编译中 define的位置,【C语言】条件编译中几个define的含义

第一个一般用于防止头文件重复引用。字面意思是如果没有定义xxx,那么定义xxx

也就是说第一遍执行这一段的时候会定义xxx宏,第二次执行相同语句的话因为刚才已经定义过了,就无法满足ifndef自然不会执行块内语句。

用法如下

#ifndef ABC_H //如果已经定义了ABC_H到这里就会引发判断,就不会编译下面的代码

#define ABC_H //如果从未定义过,我们就定义,这两个结合使用可以保证被包含的内容只被编译器执行一次

//头文件内容

#endif

第二个一般用于屏蔽语句。其实你吧define那句去掉了再看的话意思就是如果定义了states下面的语句就有效,否则救无效

比如我们经常用这样的方式去注释代码

#if 0

//无用的代码

#endif

换过来,如果用#if 1的话就是代表这段代码有效了。

通过这种方式,你就可以通过编译时定义不同的宏的方式来让不同代码生效了

再举个例子:跨平台的c语言代码常有这样的片段

#ifdef LINUX_KERNEL

//linux下的api

#endif

#ifdef WIN32

//windows下的api

#endif

上面两段代码做同样的事情,但是在不同平台下需要去调不同的api

这样的做法可以让我们在编译linux运行版本时,在编译时定义宏LINUX_KERNEL来实现linuxapi调用

在编译windows运行版本时,定义宏WIN32.是不是很方便,否则的话,不同的版本你需要写不同的代码,超级麻烦的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值