宏定义 #和##
来源:互联网 发布:淘宝找同款功能不见了 编辑:程序博客网 时间:2024/05/16 02:19
讲解:
#是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串
例如:
> #define FOO(arg) my##arg
则
> FOO(abc)
相当于 myabc
例如:
> #define STRCPY(dst, src) strcpy(dst, #src)
则
> STRCPY(buff, abc)
相当于 strcpy(buff, "abc")
另外,如果##后的参数本身也是一个宏的话,##会阻止这个宏的展开,也就是只替换一次。
#define STRCPY(a, b) strcpy(a ## _p, #b)
#define STRCPY(a, b) strcpy(a ## _p, #b) int main() { char var1_p[20]; char var2_p[30]; /* 注意这里 */ STRCPY(STRCPY(var1,var2),var2); /* 这里是否会展开为: strcpy(strcpy(var1_p,"var2")_p,"var2“)? * 答案是否定的: * 展开结果将是: strcpy(STRCPY(var1,var2)_p,"var2") * ## 阻止了参数的宏展开! * 如果宏定义里没有用到 # 和 ##, 宏将会完全展开 */ }
0 0
- 宏定义中的## 和#
- __inline和宏定义
- 宏定义中#和##
- __inline和宏定义
- 宏定义 # 和 ##
- 内联和宏定义
- 高级宏定义"\","#","#@"和"##"
- 宏定义中的#和##
- 宏定义和括号
- 宏定义中的 #和##
- 宏定义 #和##
- 宏定义中的#和##
- 宏定义中的#和##
- 宏定义中的 ##和#
- 宏定义和函数
- 宏定义中的#和##
- 宏定义的#和##
- 宏定义和常量定义的区别
- SQL实现日期的一位数表达
- Java线程:线程的同步与锁
- 自定义spring扫描器 context:component-scan
- 从0到100——知乎架构变迁史
- android SlidingMenu属性说明
- 宏定义 #和##
- 统一浏览器步骤
- android 滚轮刻度尺的实现
- 更安全的部署SSL证书
- 前端CSS规范大全
- 译文 日经春秋 20150123
- FMDB
- wince .net2.06升级到2.07
- 【OpenGL】使用Unity来学习OpenGL