当前位置:   article > 正文

C语言# ##看的头蒙?以实际应用场景剖析它!

C语言# ##看的头蒙?以实际应用场景剖析它!

C语言void关键字为什么不能定义变量?原来它只能这么用!

这一个系列,还是获得了大家的认可,不断地转载,这个系列的目的就是用比较简单的方式,深入理解原理,进行学习,而不是通过记忆的方式。好了我们继续来讲。今天说下比较有趣的内容,#,##两个预处理命令。

我们先说#,这个比较简单,这个代表将后面的内容,用字串将其包裹起来。

比如:

输出结果,

我们从代码可以看到:

#opt就是将#后面的内容,用字串替代,比如:

opt=5+6;

#opt="5+6"

这个就是它的功效,很多时候我们需要表达式,用来做注释和运算配合,比如上面的printf_add ,我们可以用#这个前缀,来实现将我们的操作变成字串,打印出来,方便我们查看。

这就是# 的意义。这个很好理解,而##就更加有意义了,它是完成前后的黏连作用。

举例来看,

#define GPIO(x) gpio##x

这个的用途是,GPIO(1),通过替换就变成了gpio1,这个就是会用在代码中,而gpio1是全局定义的,这个是方便我们进行后续的调整,将gpio1的地方,进行修正,指向新的硬件的拐点。

我们现在先来汇总下整个的用法:

1 默认什么都不加,就是直接替换

2 加上#,就是字串替换

3 加上##,就是拼接

那么它的实际场景是什么,是定义一些通用模板,我们来看看:

定义一个结构体,然后赋值,同时定义如何应用,方便处理,##就是为了快速定义,能够对应不同的类型,前缀就是基类的逻辑,##连接的一端,一般不变,最为前缀或者后缀修饰,而变化的部分就是依据具体的项目,模块,进行变化,同时可以自动继承基类,完成C++的类的功能。

而我们根本不需要记忆,可以使用之前讲过的,gcc -E hello.c -o hello.i 用这个命令,把预处理后的内容输出,查看即可。这才是根本,也就是我们对于自己写的,想看看最终生成了什么,用这个命令就可以。

解决问题,寻找通用解决思路,这样子才能够遇到未知问题,能够有思路去拆解。

好了,这一讲就说到这里,下一节我们说下,C语言中各个变量的初始化时机。

喜欢,帮忙转发~~

~~ end not end ~~

热门文章

零基础新手自学Python编程教程入门精通学习资料网站大全

自学编程C语言不迷路,我私藏的书单分享给你!

零基础新手学习算法Leetcode刷题指南

程序员码农IT工程师自学编程计算机入门进阶学习网站大全

程序员面试题宝典以及相关书籍下载!

计算机类常用电子书整理大全

职场老鸟,互联网十年从业生涯,分享 [Java,Python,安卓,AI,爬虫] 技术文章,学习资料, 热点趣闻等。关注回复 1024 Python 电子书大全 面试资料,给你一份私藏的程序员好礼,永远更新中!赶紧来关注哦!

我的微信 code_gg_boy 。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/952098
推荐阅读
相关标签
  

闽ICP备14008679号