#在宏中的某些用法(转)


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)
原文地址:https://www.cnblogs.com/cloudseawang/p/880130.html