宏替换
来源:互联网 发布:淘宝百货店铺名字 大全 编辑:程序博客网 时间:2024/06/05 08:38
宏替换
#define 名字 替换文本
表示后续程序中所有出现名字的地方全部替换为替换文本
例:
#define max(A,B) ( (A) > (B) ? (A) : (B) )
x=max( p+q , s+t );
此时会被替换为
x=( (p+q) > (s+t) ? (p+q) : (s+t) );
如果对各种类型参数的处理一致,则可以将同一宏定义应用于任何数据类型,无需针对不同的数据类型定义不同的max函数
宏调用不是函数调用,是直接将替换文本插入到代码中
使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改
宏定义不分配内存,变量定义分配内存
宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)
对于带参数的宏定义(如例子)宏名和参数的括号间不能有空格。
形式参数不能用带引号的字符串替代,但若在替代文本中参数名以#作为前缀,则结果将被扩展为有实际参数替换该参数的带引号字符串
例:
#define dprint(ex) printf( #ex " = %g\n" , ex)
dprint(x);
此时等价于
printf( " x = %g\n" , x )
预处理器运算符##为宏扩展提供一种连接实际参数的手段,若替换文本中的参数与##相邻,则该参数将被实际参数替代,##与前后的空白符将被删除,并对替换后的结果重新扫描。
例:
#define paste(front,back) front##back
paste(a,b)
此时等价于ab
#undef 名字
取消名字的宏定义
#ifdef和#ifndef用于测试某个名字是否已有定义
例:
#ifndef HDR
#define HDR
#endif
阅读全文
0 0
- 宏替换
- 宏替换
- 宏替换
- 宏替换(宏参数)
- 字符串中替换宏
- 预处理中的宏替换
- C++中的宏替换
- 宏define替换场景
- 宏替换实例
- 宏定义是替换
- C宏替换优先级
- C++中的宏替换
- 内联函数&宏替换
- C语言宏替换
- 字符串中的宏替换
- #define宏替换
- C语言宏替换
- 宏替换、重命名
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
- jasper报表之使用bean做数据源的table
- springboot(四):thymeleaf使用详解
- windows 静默模式部署Oracle数据库
- CodeForces
- 宏替换
- 能做到云中分钟级数据恢复 爱数灾备云据说能引领行业10年
- 笔记,解决命令行提示的编码GBK的不可映射字符
- javascript调用函数时什么时候加括号,什么时候不用加括号
- Spring Boot + Bootstrap 出现"Failed to decode downloaded font"和"OTS parsing error: Failed to convert W
- python 输出JSON类型数据时遇到的编码问题(utf8,unicode)
- ONVIF协议网络摄像机(IPC)客户端程序开发(5):门外汉理解ONVIF协议
- Centos(Linux) 下安装svnServer的详细教程
- Mysql的创建和更新时间