宏定义中#与##
宏定义中的#
一般用法
例如
#define TOSTRING(s) #s
#将s转为字符串
#cinlude<stdio.h>
#define TOSTRING(s) #s
int main()
{
const char *p1 = TOSTRING(123);
const char *p2 = TOSTRING(abc);
printf("%s,\t %s", p1,p2);
getchar();
return 0;
}
下面来点复杂的
双重宏定义解析
#define TOSTRING(s) #s
#define STR(p) TOSTRING(p)
/**> 可读可写 */
#define R 1
#define W 2
#define RW 3
#define NRW 4
int main()
{
//STR(R) 解析成 TOSTRING(1)
//TOSTRING(1) 解析成 #1
//最后得到“1”
const char *p1 = STR(R);
const char *p2 = STR(W);
const char *p3 = STR(RW);
const char *p4 = STR(NRW);
printf("%s, %s, %s, %s", p1, p2, p3, p4);
getchar();
return 0;
}