假设我们有一个这样的宏
#define FOO(type,name) type name
我们可以利用这一点
FOO(int, int_var);
但并不总是如此简单:
FOO(std::map<int, int>, map_var); // error: macro "FOO" passed 3 arguments, but takes just 2
Of course we could do:
typedef std::map<int, int> map_int_int_t;
FOO(map_int_int_t, map_var); // OK
不是很符合人体工程学。另外,还必须处理类型不兼容问题。知道如何用宏解决这个问题吗?