从品牌网站建设到网络营销策划,从策略到执行的一站式服务
它们本质是一样的,都是将 #define 之后的内容用另一段内容替代而已,唯一的区别就是宏常量通常是数字,而宏替换可以变得很复杂。这个就好像一个函数,f(x)=x,这样写的话很简单,但是 x 也可以是很复杂的东西,例如 f(x^3)=x^3,这两个函数都是 f,唯一的区别就是自变量的表示不一样而已。而宏替换也是如此,我们可以给 x 一个很简单的数字,也可以给它一个字符串,也可以给它一个很复杂的表达式,但是最终的效果都是将我们的宏定义替换一下。
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了含山免费建站欢迎大家使用!
(1)没有类型限制,宏替换只是单纯代码文本的替换,不会检测类型。
(2)所谓“宏调用”实际上是在编译阶段将代码替换,在编译完成之后,程序执行时,不存在宏调用的步骤,函数调用是在程序执行时实际调用的,两者没有可比性。
百度知道
c语言宏替换...展开
匿名用户
定义宏是,一般建议用括号括起来。我们来看两个例子:
例子一:
#define N m + 1
如果代码里面我们写
N * N
想象看会变成什么
m + 1 * m + 1
也就是 1 + 2 * m 这可能不是你需要的。
例子二 : 如果我们用括号括起来
#define N ( m + 1 )
同样的
N * N
这时候会替换 成
( m + 1 ) * ( m + 1 )
这样的结果才是对的。
回过头来看看你的代码, 你 需要 把 宏 括起来
#include iostream.h
#define N (2) // 这里括起来不括起来没区别;但 如果你写成 #define N 1 + 1 就可能造成区别的,所以一般宏定义建议加个括号。
#define M (N+1)
#define NUM (2 * M + 1)
int main() {
for(int i=1; i=NUM; ++i)
cout
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图