1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#表示将其后的内容转换为字符串,即加上双引号。
#define example(instr) printf("the input string is:%s",#instr)
#define example1(instr) #instr
当使用该宏定义时:
example(abc); 在编译时将会展开成:printf("the input string is:%s","abc");
string str=example1(abc); 将会展成:string str="abc";
##被称为连接符
#define TYPE1(type,name) type name_##type##_type
#define TYPE2(type,name) type name##_##type##_type
TYPE1(int, c); 转换为:int name_int_type ; (因为##号将后面分为 name_ 、type 、 _type三组,替换后强制连接)
TYPE2(int, d);转换为: int d_int_type ; (因为##号将后面分为 name、_、type 、_type四组,替换后强制连接)
C++系列2:宏定义时#(井号)和##(双井号)的作用
本文由作者按照 CC BY 4.0 进行授权