关于宏定义中 # 以及 ## 号的作用
今天在学习 的时候 遇到了类似这样的一个问题:
关于: ##的问题
#define DECLARE_INT(name) int name##NUM;
当时不明白其中 ##的意思,经过百度后发现原来他的做用是将两个字符串连接起来.
以下是解释
假如我有以下代码
#define DECLARE_INT(name) int name##NUM;
int main()
{
DECLARE_INT(XiaoMing)
return 0;
}
编译器将它展开之后就是
int main()
{
int XiaoMingNUM;
return 0;
}
关于: #的问题
这个的意思就是 : 将他后面的东西变成字符串
以下是解释:
#define STUDENT_NAME(name) char lpszName[] = #name;
int main()
{
STUDENT_NAME(xiaoming)
return 0;
}
展开后变成
#define STUDENT_NAME(name) char lpszName[] = #name;
int main()
{
char lpszName[] = "xiaoming";
return 0;
}