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
- c语言里,关于宏定义的使用
- 【C语言】关于宏定义中#和##符号的使用和宏定义展开问题
- 【C语言】关于宏定义中#和##符号的使用和宏定义展开问题
- 【C语言】关于宏定义中#和##符号的使用和宏定义展开问题
- 【C语言】关于宏定义中#和##符号的使用和宏定义展开问题
- 【C语言】关于宏定义中#和##符号的使用和宏定义展开问题
- 【C语言】关于宏定义中#和##符号的使用和宏定义展开问题
- C语言宏定义的使用
- c语言宏定义的使用(一)
- c语言宏定义的使用(二)
- C语言宏定义的使用小结
- C语言宏定义的使用
- C语言------宏定义的使用
- C语言宏的定义及使用
- C语言宏定义的使用
- C语言的宏定义与使用
- 关于C语言中switch的case里定义变量解决编译报错
- CDEFINES用于定义C语言使用的宏定义
- Android studio -SVN 使用笔记
- HDU 5421 Victor and String【回文树扩展——可左右添加字符的回文树】
- 类中的常成员函数的使用和定义
- 在chrome浏览器中执行javascript
- JavaScript连接符前面数字后面字符串和前面字符串后面数字的差别
- c语言里,关于宏定义的使用
- JPA多对一单向关联
- IOS UIImagePickerViewController相关(转)
- CentOS、Ubuntu、Debian三个linux比较异同
- 第三周项目3 求集合并集
- 第四周-项目5 - 猴子选大王
- SwipeGesture类(Leap:: SwipeGesture)
- java学习3-二维数组内存图
- Linux网卡相关