与#运算符类似,## 运算符可以用于类函数宏的替换部分。而且,##还可以用于对象宏的替换部分。##运算符把两个记号组合成一个记号。例如:
#define XNAME(n) x ## n //宏XNAME(4)将展开为x4
程序示例
#include<stdio.h>
#define XNAME(n) x ## n
#define PRINT_XN(n) printf("x" #n " = %d\n",x ## n);
int main()
{
int XNAME(1) = 14; //变成int x1 =14;
int XNAME(2) = 20;
int x3 = 30;
PRINT_XN(1); //变成 printf("x1=%d\n",x1)
PRINT_XN(2);
PRINT_XN(3);
return 0;
}
此中,PRINT_XN()宏用#运算组合字符串,##运算符把记号组合为一个新的标识符。
输出示例
x1 = 14
x2 = 20
x3 = 30