C/C++宏之#与##

C/C++宏之#与

1 ‘#’为将其后面的宏参数进行字符串化操作

1.1 例子

1
2
3
4
5
6
7
8
9
10
#include <iostream>

#define ToString(s) #s

int main(int argc, char *argv[])
{
std::cout<<ToString(sssss)<<std::endl;

return 0;
}

1.2 输出

sssss

2 ‘##’为连接符,主要用于减少代码密度

2.1 例子

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#define Concatenator(a, b) a##b

void ab() {
std::cout<<"This is 'ab' function."<<std::endl;
}

int main(int argc, char *argv[])
{
Concatenator(a, b)();

return 0;
}

2.2 输出

This is 'ab' function.