之:宏定义#define

#赵闪闪<studio.h> 2019-12-30 07:05:08
宏定义SQ(y) (y)*(y) 第几句a+1代替了y? 明明SQ(y) 被定义为(y)*(y),怎么被(y)*(y)代替了SQ,SQ后面的(y)哪去了
...全文
17 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2019-12-30
  • 打赏
  • 举报
回复
#define就是直接替换代码的
你无妨这样想象, 程序在执行真正的编译之前,先做了一遍预处理过程
遇到SQ(y)这样的代码,比如你的例子当中 SQ(a+1),它就自动的给你替换成(y)*(有),也就是等于你手工输入的代码 (a+1)*(a+1) 一样
完成这个替换后, 程序才继续编译

  • 打赏
  • 举报
回复
我自学,有点看不懂这个过程,能通俗店么?
自信男孩 2019-12-30
  • 打赏
  • 举报
回复
需要注意的宏定义等价替换不是在程序执行时,而是预编译阶段。总得来说,宏定义替换是在形成可执行程序前就发生了。

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧