C ++函数的#define宏

时间:2014-04-16 19:35:03

标签: c++ macros

我有一个定义的头文件。我希望每种内置类型都有最大和最小功能。

我使用以下宏:

#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尝试此操作。我不知道如何处理这个错误。

欢迎任何意见。

2 个答案:

答案 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::minstd::max