#:构串操作符
构串操作符 # 只能修饰带参数的宏的形参,它将实参的字符序列(而不是实参代表的值)转化为字符串常量
执行以下代码
#include <stdio.h>
#define STRING(s) #s
#define TEXT(s) "class"#s"info"
int main()
{
int integer = 999;
printf(STRING(integer)"\n");
printf(TEXT(integer)"\n");
return 0;
}
输出结果:
integer
classintegerinfo
请按任意键继续. . .
##:合并操作符
合并操作符将出现在其左右的字符序列合并成一个新的标识符
注意:
使用合并操作符 ## 时,自身的标识符必须预先有定义,否则编译器会报“未定义标识符”错误
字符序列合并之后是标识符,不是字符串
执行以下代码:
#include <stdio.h>
#include <iostream>
using namespace std;
#define CLASS_NAME(name) class##name
#define MERGE(x, y) x##y##x
int main()
{
int classname = 10;
int aaabbbaaa = 20;
cout << "classname = " << CLASS_NAME(name) << endl;
cout << "aaabbbccc = " << MERGE(aaa, bbb) << endl;
return 0;
}
执行结果:
classname = 10
aaabbbccc = 20
请按任意键继续. . .