c语言里,关于宏定义的使用

来源:互联网 发布:北京微型软件开发公司 编辑:程序博客网 时间:2024/06/04 20:05

宏定义最关键的是要注意它只是一个文本替换,不注意的话,很容易引起歧义,看下面一段代码:

#include<stdio.h>

#define  M( x )   ( x*x )

int  main()

{

int a, b= 3;

a = M( b+2 );

printf ("%d\n" , a );

return 0;

}

这里的 M 是想要得到 x 的平方,而在程序中调用的参数为 b+2 ,原本想将 a 赋值为 (b+2)*(b+2),也就是 25 ,但是由于宏定义是展开在预处理时期,也就是在编译之前,此时 b 并没有赋值,这时候的 b 只是一个符号。 因此在程序中被展开为: (b+2*b+2); 所以程序执行后的结果为 a 的值为11。

所以为了达到原来的目的,我们可以把宏定义 M 改为:

#define  M(x)  ( (x) * (x) )

就可以变为平方的形式了

0 0
原创粉丝点击