#define MACRO(a) a
MACRO(ClassA<t1,t2>);
这种写法会导致在VS2008(其他编译器没试过)编译不过去
报错的原因说宏超过了参数太多
很明显是编译器把用来分割模板的逗号误解为用来分割宏参数的了,在<>内的逗号应该算在同一个变量里的
解决这个问题的办法是采用typedef
typedef ClassA<t1,t2> newType;
MACRO(newType);
#define MACRO(a) a
MACRO(ClassA<t1,t2>);
这种写法会导致在VS2008(其他编译器没试过)编译不过去
报错的原因说宏超过了参数太多
很明显是编译器把用来分割模板的逗号误解为用来分割宏参数的了,在<>内的逗号应该算在同一个变量里的
解决这个问题的办法是采用typedef
typedef ClassA<t1,t2> newType;
MACRO(newType);