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宏定义替换
文章分享:http://hbruida.cn/article/dosijji.html