C/C++ 宏

      学习 2006-12-25 10:56


#define FunctorParamSec(N) \
template<typename F> \
class UsedFunctorParam<F,N>{ \
public: \
typedef typename F::Param##N##T Type; \
}

\是换行
##是连接算符
例如:
#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
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}