深入理解“宏”

深入理解“宏”宏的作用是将一个标识符指定为其他替换列表的预处理记号

大家好,欢迎来到IT知识分享网。

在这里插入图片描述

宏使用注意事项:

1、宏不允许重复定义(排除替换列表完全等价的情况)。
2、可以使用#undef指令取消先前定义的宏。
3、宏不支持递归。
4、宏名必须全为大写。
5、宏的替换列表需要用小括号。



对象式宏
对象式宏定义使用如下:
在这里插入图片描述
分析:


例程3中data 宏名为小写不符合规范

例程4中TEST 替换列表中没有使用小括号

宏函数式宏

函数式宏定义可以有参数,参数位于宏名之后的一对小括号中。函数式宏使用注意事项:

1、每个宏参数的作用域为从它出现位置开始,到当前宏结尾。
2、宏名和左括号“(”之间不能有空白。

例程2中SQUARE这个宏违反替换列表需要用小括号这条规则,如SQUARE(1+2)的结果式1+2*1+2 为5,并非想要的求平方的结果!

函数式宏和函数的最大区别是:

函数式宏的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,省去了函数的调用,返回,效率比函数高(产生的代码文件较大)。

“#”和“”在宏中使用
“#”记号串化

“”记号黏结

记号黏结的作用是将几个预处理记号合并成一个。

创作不易希望朋友们点赞,转发,关注。希望获取源码的朋友们在评论区里留言。
作者:李巍
Github:liyinuoman2017

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/115404.html

(0)
上一篇 2025-12-03 10:26
下一篇 2025-12-03 10:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信