在 C/C++ 编程语言中,当程序被编译时,被发送到编译器,编译器将程序转换为机器语言,然后完成编译并执行该程序。预处理器也称为宏预处理器。C /C++中的宏可以定义为一组程序语句,并在必须使用这些代码集时使用该名称。
这些宏始终以符号开头,以该符号开头的语句由编译器调用。
define 奇妙用法
- 特殊符号:,,@
该宏还可用于传递可以通过在标记前使用特殊符号将其转换为字符串的标记。让我们看一
include
在上面的代码中,我们定义了类似函数的宏,其中参数n与n一起传递,这将允许您检索字符串文字。
该宏还支持将可以传递给宏以使用特殊运算符连接字符串。让我们看一个例子:
include
上面的代码定义了类似函数的宏,其中传递令牌以连接p和q两个值。
下面我们接着看看@使用。
include
在上面的代码中,我们定义了类似函数的宏,s 表示用双引号包括参数s,返回一个字符串。
- 多行宏
类似对象的宏可以有多行。因此,要创建多行宏,您必须使用反斜杠换行符。
include
宏也可以写成多行,语句以\开头,不需要以\结尾。让我们再看一个例子:
include
- 可变参数宏
可变参数宏是具有可变数量参数的宏(也可以用 C 编写可变参数函数)。下面是一个例子:
include
简单来说,…表示所有剩下的参数,__VA_ARGS__被宏定义中的…参数所替换。这在c语言的GNU扩展语法里是一个特殊规则:当__VA_ARGS__为空时,会消除前面这个逗号。
【学习交流群】不知道怎么学?遇到问题没人问?到处找资料?邀请你加入我的嵌入式物联网单片机学习交流群,群内气氛活跃,大咖小白、在职、学生都有,还有群友整理收集的100G教程资料,点击下方进群占位。(点击跳转到群二维码,请放心点击!)
- 条件编译
include
如果我们要输出DEBUG版本,则打开这个宏开关(不屏蔽define debugPrintf ),此时所有的debugPrintf ()宏定义信息都会被替换成为printf()。
总结
宏是程序中由宏的值替换的一段代码。宏由define 指令定义。每当编译器遇到宏名称时,它就会用宏的定义替换名称。宏定义不需要以分号;结束。
原文链接:C语言define的妙用转载自:ARM与嵌入式版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容