C语言宏中#和##的作用
2010-05-26 10:42
204 查看
在c语言的宏中
1. #的作用是将宏参数字符串化,用例子说明比较直观。
例如下面的宏定义
#define STR( s ) #s
那么在程序中
printf("The string is %s/n", STR(OPEN) );
会被展开成
printf("The string is %s/n", "OPEN" );
也就是说,会对#后跟的参数加引号,使其变成一个字符串。
2. ##的作用是对文本进行连接
例如下面的宏定义
#define CONS( a, b ) a##e##b
那程序中
printf("the number is %d/n", CONS(2,3) );
会被展开成
printf("the number is %d/n", 2e3 );
需要注意的是,在有#和##的宏中,如果参数本身是宏,则这个参数宏不会展开。
加一层中间转换宏可以解决这个问题。
#define _STR(s) #s
#define STR(s) _STR(s) // 转换宏
#define _CONS(a,b) int(a##e##b)
#define CONS(a,b) _CONS(a,b) // 转换宏
1. #的作用是将宏参数字符串化,用例子说明比较直观。
例如下面的宏定义
#define STR( s ) #s
那么在程序中
printf("The string is %s/n", STR(OPEN) );
会被展开成
printf("The string is %s/n", "OPEN" );
也就是说,会对#后跟的参数加引号,使其变成一个字符串。
2. ##的作用是对文本进行连接
例如下面的宏定义
#define CONS( a, b ) a##e##b
那程序中
printf("the number is %d/n", CONS(2,3) );
会被展开成
printf("the number is %d/n", 2e3 );
需要注意的是,在有#和##的宏中,如果参数本身是宏,则这个参数宏不会展开。
加一层中间转换宏可以解决这个问题。
#define _STR(s) #s
#define STR(s) _STR(s) // 转换宏
#define _CONS(a,b) int(a##e##b)
#define CONS(a,b) _CONS(a,b) // 转换宏
相关文章推荐
- C语言宏定义中#和##的作用
- C语言宏的高级应用 #与##作用
- c语言:#和##的区别及作用
- C语言中##的作用
- C语言中##的作用
- C语言中 ##和#的作用
- c语言:#和##的区别及作用
- C语言宏定义中#和##的作用(需要对两片博文进行整理)
- C语言宏中#和##的用法 -- 2010.10.30高通笔试
- 内核代码宏中 do{...}while(0) 的作用以及宏中#和##的作用及典型应用
- C语言中的#与##字符的作用
- C语言宏定义中的#和##的作用【转】
- C语言中的#与##字符的作用
- C语言中volatile关键字的作用
- c语言中volatile关键字的作用
- #define中的#和##作用
- C语言头文件的作用(示例)
- C语言连接符号##和#解析
- C语言中extern的作用
- C语言中位运算符异或“∧”的作用