C/C++编程笔记:浅析 C 语言中宏定义的使用,知识点全解( 三 )
#define宏名(参数表)宏体
例如:#defineAREAR(R)3.14*R*R
#define SUM(X , Y) X+Y
两种格式的宏定义必须写在函数的外边 , 其作用域为宏定义命令起到源程序结束 , 若要终止其作用域可以用#undef命令加宏名 , 宏定义也允许嵌套 , 在宏定义的字符串中可以使用已经定义的宏名 。
二、宏展开及宏调用
(一)宏展开及调用的概念
编译预处理时程序中出现的所有宏名都要有宏定义中的字符串来代换 , 称为宏展开 。 嵌套的宏定义 , 展开时要层层展开 。 程序中字符串内的字符跟宏名相同时作为一般字符处理 , 不用宏展开 。 对于带参数的宏的使用称为宏调用 , 一般形式为:宏名(实参表);在调用中 , 不仅要宏展开 , 而且要用实参去代换形参 。
C语言源程序的处理过程 , 经历了编辑、预处理、编译、连接几个过程 。 其中预处理产生编译的输入 , 源文件中若有宏命令 , 则预处理器将其展开成相应的宏定义 , 这个阶段的工作只是纯粹的替换展开 , 没进行任何的计算 。 同时现有的编译系统没有提供独立的预处理系统进行预处理 , 所以我们看不到预处理后的代码 , 在编译时可能会出现错误 , 但是系统检测不出来 。 所以在宏展开时我们一定要谨慎 。
推荐阅读
- 游戏笔记本|Dota2-今天又是玛西被削的一天?水友:强度太高,还得接着削!
- 森林之子|双十一性价比风暴来袭,这些性能强劲的笔记本不容错过
- 黑神话|解析《黑神话:悟空》技术看点,RTX 30系笔记本带来极致体验
- 笔记本|红米G笔记本香爆?5000元大作全安排!玩家:这就整超激斗梦境
- 梦幻西游|梦幻西游:找到了当年记录账号的笔记,因为它还被父母混合双打过
- 单机|老旧笔记本轻松畅玩,10款超低配置的经典单机
- 元气骑士|经费炸裂!《元气骑士》新角色比死亡笔记更强,比司铎团更加惊艳
- 地下城与勇士|DNF:韩服6.21开发者笔记,刃影太刀物理固伤,神话合成系统出现
- 国服|第五人格:联动“死亡笔记”?一颗红苹果的期待却与国服彻底绝缘
- Java|Java 地位不保,落后已成定局 ?| 10月编程语言排行