我有一个定义的头文件。我希望每种内置类型都有最大和最小功能。
我使用以下宏:
#define DEFINE__MIN_MAX(type) \
inline type max(type x, type y) { return (x>y) ? x : y ; } \
inline type min(type x, type y) { return (x<y) ? x : y ; }
现在我调用宏来专门化短数据类型
DEFINE_MIN_MAX(short) // Error: type 'short' unexpected .
我在Windows中使用QtCreator 3.0.1尝试此操作。我不知道如何处理这个错误。
欢迎任何意见。
答案 0 :(得分:1)
琐碎错误:定义中有双下划线,但在调用中只使用一个下划线。改变行
#define DEFINE__MIN_MAX(type) \
到
#define DEFINE_MIN_MAX(type) \
它应该可以正常工作。
答案 1 :(得分:1)
远离宏。 C ++为几乎所有标准的宏用法提供了类型安全的替换。对于您的情况,您希望每个类型T都有最小和最大函数,请将其表示为模板:
template<typename T> T const& min(T const& x, T const& y) {
return (x < y) ? (x) : (y);
}
template<typename T> T const& max(T const& x, T const& y) {
return (x > y) ? (x) : (y);
}
或者使用标准库中的std::min
和std::max
。