任何人都有这个gcc编译器错误的解决方案:macro" min"通过3个参数,但只需要两个

时间:2014-01-15 22:50:41

标签: c++ gcc

这是我的代码:

template<typename _Tp, typename _Compare>
inline const _Tp&
inline min(const _Tp& __a, const _Tp& __b, _Compare& __comp)
{
   if (__comp(__b, __a))
    return __b ;
  return __a;
}

这是我收到的错误消息:

  

/ usr / include / c ++ / 4.4 / bits / stl_algobase.h:232:57:错误:宏“min”传递3个参数,但只需2个

我知道我传递了3个参数a,b和comp但是我只返回a和b,但是当我尝试返回comp时它会给我相同的信息。

1 个答案:

答案 0 :(得分:3)

你某处有#define min(a, b),所以预处理器尝试扩展它并失败

试试(min)(a, b, compare)。 <{1}}周围的括号可以防止宏扩展。