读书人

请问一个C++中关于符号quot;quot;和quot;quot;的有关问

发布时间: 2012-03-03 15:33:03 作者: rapoo

请教一个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

读书人网 >C++

热点推荐