C语言宏定义
来源:互联网 发布:mac如何复制粘贴照片 编辑:程序博客网 时间:2024/05/16 11:37
C语言中用宏定义的一般形式: #define 宏名 字符串;带参数的宏定义 :#define 宏名(参数列表) 字符串,宏名与形参列表之间不可有空格。
宏的调用,仅是将宏的字符串代换程序中的宏名,(带参数的宏不仅要宏展开还要用实参代换形参,不存在值传递,) 。
带参宏定义和函数的区别:
【示例①】用函数计算平方值。
- #include <stdio.h>
- int SQ(int y){
- return ((y)*(y));
- }
- int main(){
- int i=1;
- while(i<=5){
- printf("%d^2 = %d\n", (i-1), SQ(i++));
- }
- return 0;
- }
1^2 = 1
2^2 = 4
3^2 = 9
4^2 = 16
5^2 = 25
【示例②】用宏计算平方值。
- #include <stdio.h>
- #define SQ(y) ((y)*(y))
- int main(){
- int i=1;
- while(i<=5){
- printf("%d^2 = %d\n", i, SQ(i++));
- }
- return 0;
- }
1^2 = 1
3^2 = 9
5^2 = 25
分析如下:在示例①中,函数调用是把实参 i 值传给形参 y 后自增 1,然后输出函数值,所以要循环5次,输出1~5的平方值。而在示例②中宏调用时只作代换,SQ(i++) 被代换为 ((i++)*(i++))。第一次循环,i 的值为1,(i++)*(i++)=1;第二次循环 i 的值为 3,(i++)*(i++)=9;第三次循环 i 的值为 5,(i++)*(i++)=25;第四次循环,i 的值为7,终止循环。
从以上分析可以看出函数调用和宏调用二者在形式上相似,在本质上是完全不同的。
0 0
- c语言宏定义
- C语言宏定义
- c语言宏定义
- c语言宏定义
- C语言宏定义
- c 语言宏定义
- C语言宏定义
- C语言宏定义
- c语言宏定义
- c语言宏定义
- C语言宏定义
- C语言宏定义
- c语言宏定义
- c语言宏定义
- C语言宏定义
- C语言宏定义
- C语言宏定义
- C语言宏定义
- 当无符号数与有符号数一起玩耍时
- 非常好的运算放大器基础
- ThinkPHP框架报错:项目目录不可写,目录无法自动生成! 请使用项目生成器或者手动生成项目目录~
- MySQL基本操作(四):运算符
- hibernate.cfg.xml文件连接mySql、Oracle、SqlServer配置
- C语言宏定义
- PHP中构造函数的意义在哪里?
- jQuery Ajax 实例 全解析
- 重写导航控制器,利用重写pop和push方法来隐藏底层的tabbar和其他一些事件
- springMVC之对象中的基本类型数据绑定遇到的问题
- C#第一次调用matlab程序反应慢的“解决”办法
- 积攒力量,终会展翅飞翔。Linux学习记录
- grunt学习笔记
- Vim 常用快捷键