(2)
#define STR(s) #s
#define CONS(a,b) int(a##e##b)
printf("int max: %s\n", STR(INT_MAX...)); // INT_MAX #i nclude
这行会被展开为:
printf("int max: %s\n", "INT_MAX");
printf("%s\n", CONS...(A, A)); // compile error
这一行则是:
printf("%s\n", int(AeA));
INT_MAX和A都不会再被展开, 然而解决这个问题的方法很简单..._CONS(a,b) int(a##e##b)
#define CONS(a,b) _CONS(a,b) // 转换宏
printf("int max: %s\n", STR(INT_MAX...)); // INT_MAX,int型的最大值,为一个变量 #i nclude
输出为: int max: 0x7fffffff
STR(INT_MAX) -->