本文参考:https://blog.csdn.net/ztsinghua/article/details/44593533
总结文章中C++语言中#号使用有如下三种方式:
1、单个#号使用(#),表示字符串化
可以用如下代码单步执行调试:
#include <iostream>
#define stringer( x ) printf( #x );
#define stringer2( x ) printf( "test"#x "test2\n" );
int main() {
stringer(In quotes in the printf function call\n);//In quotes in the printf function call
stringer("In quotes when printed to the screen"\n);//"In quotes when printed to the screen"
stringer("This: \" prints an escaped double quote");
stringer2(Hellow);//输出结果testHellowtest2
return 0;
}
2、两个##号使用(##),表示连接符
代码如下,可以单步调试理解原理
#include <iostream>
#define token9 12//故意这么设置,帮助理解原理
#define paster( n ) printf( "token" #n " = %d",token##n )
int main() {
paster(9);//结果输出 token9 = 12
return 0;
}
3、#@联合使用(#@),字符化
代码如下:
#include <iostream>
#define makechar(x) #@x //#@连在一起作字符化,
int main() {
std::cout << makechar(b) << std::endl;//输出:b
std::cout << makechar(bc) << std::endl;//输出:25187
std::cout << makechar(abc) << std::endl;//输出:6382179
return 0;
}
这篇文章可以作为进阶版,可以作为实用功能放在代码间
功能上面都介绍完了,代码如下:
#include <iostream>
#define ToString(x) #x
#define Conn(x,y) x##y
#define ToChar(x) #@x
using namespace std;
int main()
{
char* str = Conn("Zhu", "Penghui");
cout << str << endl;
int num = Conn(12, 20);
cout << num << endl;
char a = ToChar(1);
cout << a << endl;
char * Changstr = ToString(12432);
cout << Changstr << endl;
char * Changstr2 = ToString(zhupengh);
cout << Changstr2 << endl;
return 0;
}
输出结果:
ZhuPenghui
1220
1
12432
zhupengh