C #define中的 "\,#,## #@"

来源:互联网 发布:贝尔狂虐伊莲娜 知乎 编辑:程序博客网 时间:2024/06/01 17:22

作者:longlongago 博客:http://blog.csdn.net/longlongago2000 转帖请保留

相信看了上一篇文章的单例宏定义源码后对里面几个宏定义的操作符有些迷惑,以下就是这几个操作符的说明:

以下内容转自:http://hi.baidu.com/shzhrui/blog/item/2755281751a3aa0c4a90a7bd.html

在用#define 定义时 , 斜杠("\")是用来续行的,

"#"用来把参数转换成字符串,是给参数加上双引号。
"##"则用来连接前后两个参数,把它们变成一个字符串,
"#@"是给参数加上单引号。下面的例子会使您很容易理解。
#define CAT(x,y) x##y       /* CAT(1,"abc") => "1abc" */
#define TOCHAR(a) #@a       /* TOCHAR(1) => '1' */
#define TOSTRING(x) #x      /* TOSTRING(1) => "1" */