c语言函数宏替换 c宏定义替换
求c语言中宏常量和宏替换的异同点
它们本质是一样的,都是将 #define 之后的内容用另一段内容替代而已,唯一的区别就是宏常量通常是数字,而宏替换可以变得很复杂。这个就好像一个函数,f(x)=x,这样写的话很简单,但是 x 也可以是很复杂的东西,例如 f(x^3)=x^3,这两个函数都是 f,唯一的区别就是自变量的表示不一样而已。而宏替换也是如此,我们可以给 x 一个很简单的数字,也可以给它一个字符串,也可以给它一个很复杂的表达式,但是最终的效果都是将我们的宏定义替换一下。
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了含山免费建站欢迎大家使用!
C语言:(1)宏替换有数据类型的限制吗?(2)宏调用笔函数调用耗费时间吗?
(1)没有类型限制,宏替换只是单纯代码文本的替换,不会检测类型。
(2)所谓“宏调用”实际上是在编译阶段将代码替换,在编译完成之后,程序执行时,不存在宏调用的步骤,函数调用是在程序执行时实际调用的,两者没有可比性。
c语言宏替换自动补括号吗
百度知道
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
标题名称:c语言函数宏替换 c宏定义替换
URL标题:http://cdiso.cn/article/dosijji.html