C语言的##在宏里面的使用
1、一般用法
,我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.

2、当宏参数是另一个宏的时候,需要注意的是凡宏定义里有用'#'或'##'的地方宏参数是不会再展开.

3、非'#'和'##'的情况,#define TOW (2)
,#define MUL(a,b) (a*b),printf("%d*%d=%d\n", TOW, TOW,MUL(TOW,TOW))

4、这行的宏会被展开为:
printf("%d*%d=%d\n", (2), (2),((2)*(2)));
MUL里的参数TOW会被展开为(2).

5、 当有'#'或'##'的时候
,#define A (2)
,#define STR(s) #s
,#define CONS(a,b) int(a##e##b)

6、INT_MAX和A都不会再被展开, 然而解决这个问题的方法很简单. 加多一层中间转换宏.

7、加这层宏的用意是把所有宏的参数在这层里全部展开, 那么在转换宏里的那一个宏(_STR)就能得到正确的宏

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
                                阅读量:25
阅读量:47
阅读量:41
阅读量:52
阅读量:139