请教一个C++中关于符号"#"和"##"的问题
这是一个宏定义:
#define P( className ) \
int className ## create{ \
...... //内容省略 \
const char* className::para1 = #className "create "; \
...... //内容省略 \
}
我想问的是,这段中的 "## "和 "# "这两个符号分别代表什么意思。
烦请指点,多谢了!
[解决办法]
给个例子你就明白了:
#include <iostream>
using namespace std;
#define P( para ) \
char * mychar = #para "123 "\
P(hello);
int main()
{
printf( "mychar = %s\n ", mychar);
}
输出的结果就是:mychar = hello123
[解决办法]
##是连接字符串
#是将宏定义中的变量转换为字符串
例如
#define P(A) #A
#define Q(A,B) A##B
源码:
int main()
{
cout < <P(a) < <endl;
cout < <Q( "a ", "b ") < <endl;
}
编译后为:
int main()
{
cout < < "a " < <endl;
cout < < "a " "b " < <endl;
}
输出
a
ab