#在宏中的某些用法(转)
1. 使用#可以将宏参数变为一个字符串,用##可以把两个宏参数粘合在一起
例: #define STR(s) #s
#define CONS(a,b) int(a##e##b)
printf(STR(vck)) ----> printf("vck");
printf("%d\n", CONS(2,3)) ----> printf("%d\n", int(2e3));
2. 当宏参数是另一个宏的时候,凡宏定义里有'#'或'##'的地方宏参数是不会被替换的.解决方法是再加层宏.
例: #define A (2)
#define CONS(a,b) int(a##e##b)
CONS(A, A) ----> int(AeA),不会转成 int(2e2)
解决方法:
#define A (2)
#define _CONS(a, b) int(a##e##b)
#define CONS(a, b) _CONS(a, b)
CONS(A, A)----> _CONS(2, 2)---->int(2e2)