#define paster( n ) printf( “token " #n” = %d\n ", token ## n )
注意:(1)#n 两边的引号必须要 (2) ## 两边的空格可有可无,不影响
"#"用来把参数转换成字符串,是给参数加上双引号。
"##"则用来连接前后两个参数,把它们变成一个字符串,
"#@"是给参数加上单引号。下面的例子会使您很容易理解。
#define CAT(x,y) x##y /* CAT(1,“abc”) => “1abc” /
#define TOCHAR(a) #@a / TOCHAR(1) => ‘1’ /
#define TOSTRING(x) #x / TOSTRING(1) => “1” */
#define后面的""是续行符,表示下面一行是紧接着当前行的,一般用于将十分长的代码语句分几段写
注:在一行语句后面加上\相当于换行符,就是上一行写不下换到下一行继续写。
例如:chin
ese
其实 是等价于chinese的。
register:这个关键字请求编译器尽可能的将变量存在CPU 内部寄存器中而不是通过内存寻址访问以提高效率