C/C++ 宏高手请进

这是我在人民邮电出版社出的<<C++ Templates>>p426 上摘录的一段宏代码,但是我在网上找了半天也没有相关用法的解释,望赐教^_^
// functors/functorparam2.h
#define FunctorParamSec(N) \
template<typename F> \
class UsedFunctorParam<F,N>{ \
public: \
typedef typename F::Param##N##T Type; \
}
...
FunctorParamSpec(3);
FunctorParamSpec(2);
...
FunctorParamSpec(20);
#undef FunctorParamSpec

请问一下这段代码是什么意思?代码中的'\', '##'这些的用法是什么?

\是换行
##是连接算符
例如:
#define a(N) b##N

int main(int argc, char* argv[])
{
int bb3=5;
printf("%d",a(b3)); //等价于printf("%d",bb3);
return 0;
}
即可以将多个字符拼成一个变量名

template<typename F>
class ...
是定义模板类

typedef typename F::Param##N##T Type;
##就不多说了,是把Param和N和T代表的字符拼成一个,应该是一个类型名称
typedef 用来把typename F::Param##N##T起一个别名为Type,省得每次都写那么复杂,而且用Type意思也很清楚,但这种类型只有在UsedFunctorParam类的范围内可见,既有作用域,如果想在外面使用应该写成:UsedFunctorParam::Type

另外,C++模板如果用好了是很有用的,看完这本书以后,推荐你看看C++编程新思维
温馨提示:答案为网友推荐,仅供参考
第1个回答  2006-10-07
这是宏定义
一般不这么用的
\是物理行换行
#就是宏定义
相似回答