c语言宏定义中的#和##
来源:互联网 发布:新开淘宝店怎么找货源 编辑:程序博客网 时间:2024/04/29 04:45
众所周知宏定义是在编译器预处理阶段进行的语法替换,发生在编译之前。
“##”是一个连接符号,用于把参数连在一起
“#”是“字符串化”的意思。出现在宏定义中的”#”是把跟在后面的参数转换成一个字符串
int v5 = 5;#define f(n) printf("v "#n" = %d\n", v##n)f(5); //输出:v 5 = 5
//define.c#include <stdio.h>#define FUNC_STOP stopint player_stop(){ return 0;}int player_start(){ return 2;}int player_resume(){ return 3;}int player_play_1x(){ return 4;}typedef struct{ int (*stop)(); int (*start)(); int (*resume)(); int (*play_1x)();}PLAYER;int main(){ PLAYER player;#define SET(x) \ printf("set %s\n", #x); \ player.x = player_##x#define SSET(x) \ SET(x) //SET(stop); /*注意下面这行语句*/ SSET(FUNC_STOP); SET(start); SET(resume); SET(play_1x); printf("%d %d %d %d\n", player.stop(), player.start(), player.resume(), player.play_1x()); return 0;}
0 0
- C语言中宏定义中的#和##
- C语言宏定义中的#和##符号
- c语言宏定义中的#和##
- C语言中的宏定义
- C语言中的宏定义
- C语言中的宏定义
- C语言中的宏定义
- C语言中的宏定义
- C语言中的宏定义
- C语言中的宏定义
- C语言中的宏定义
- C语言中的宏定义
- C语言中的宏定义
- C语言中的宏定义
- C语言中的宏定义
- C语言中的宏定义
- C语言中的宏定义
- C语言中的宏定义
- android之ViewFlipper实现左右滑动动画效果
- 凡客如戏
- thinkphp 增删改查 ajaxreturn
- 7、map集合和IO流
- SCXML有限状态机规范详解与使用
- c语言宏定义中的#和##
- 行为型模式-模板方法
- 贪心 今年暑假不AC
- 不区分大小写的串比较---Windows下的stricmp和Linux下的strcasecmp, 遇到了, 所以记录一下!
- 设计模式学习(六):模版模式
- poj 2455 Secret Milking Machine 二分+最大流
- how to choose premium grade brown film faced plywood
- uva 10285 滑雪,记忆化搜索
- 【j2ee spring】22、关于spring中配置hibernate的二级缓存