C语言预处理命令_条件编译

对于C语言的预处理命令:宏定义,文件包含(头文件引用),条件编译。
各自的概念在此不赘述,百度即可
【1】今儿主要是想理一下条件编译:
第一个:
#if 条件
代码1
#elif 条件
代码2
#elif 条件
代码3



#endif
其实跟if(条件1){}else if(条件2){}else{}这个是一样的使用规则,
判断依据:或者情况比较,或者非0为真。验证如下:
在这里插入图片描述
第二个:
#ifndef 宏名 | #ifdef 宏名
#define 宏名



#endif
很多人对这个宏名的情况不太清楚
1、首先这个宏名可以用户自己随便写,但是前提是符合命名规则(c语言标记符命名规则,但是一般都是大写的形式)
2、比如说:
#ifndef FILE_C
#define FILE_C
void sub2()
{
}
#endif
其中可以写成:#define FILE_C void sub(){ }
就相当于FILE_C 等价于 void sub(){ },所以这些横着写你就一下子容易联系到之前写的宏定义
比如:#define led P0 ( led等价于P0)
所以:
在这里插入图片描述
在这里插入图片描述
(这里不规范自己将.c文件引用为头文件,只是为了说明问题,简单些)三个头文件在编译器编译的时候,发现sub2()被定义了两次(会编译报错)。如果见c.c文件内容改成上面条件编译,那么如果没有定义FILE_C(也就是sub2()函数),才会执行下面的#define代码,但是显然前面b.c文件以及定义过sub2()函数了,所以就不会执行下面的#define代码,不会再重新定义sub2()函数了。

【2】对于头文件的引用,一般遇到的疑问比如说就是头文件1里声明相应的函数,但是函数实体在其他源文件1中编写,而另一个源文件2要调用前源文件1的函数,只需要调用前头文件1即可,一般多个文件都是在一个项目工程内,负责处理这个问题的是相应的编译器(预处理→编译→链接)。
【3】当然,c工程文件中编码还有许多情况,其他请参阅我的另外一篇文章
https://blog.csdn.net/SUR0608/article/details/122870742?spm=1001.2014.3001.5502

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUR0608

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值