'powf'不是'std'的成员

时间:2011-03-30 08:36:02

标签: c++ std

我在我必须为XCode编译的库上有这个错误。 < cmath>包括在内。

有人可以向我解释出现了什么问题吗?

感谢。

3 个答案:

答案 0 :(得分:11)

直到C ++ 11,powf只是Microsoft-ism。它根本没有出现在ISO标准中,因此不太可能出现在XCode中,除非它们能够适应微软奇怪的做法,我认为不太可能。

另一方面,

pow已经成为C ++库的一部分,因为它在C库的早期迭代中被合并到C ++ pre-11中。请改用它。

从C ++ 11开始,powf 出现在ISO标准中,并且是std命名空间的一部分。

然而,存在不合规的实现,例如gcc libstdc ++。本摘录中的更多资源来自cppreference talk page中的讨论:

  

上面发布的答案在C ++ 11之前是正确的,因为C ++ 98/03尚未引用C99库。根据{{​​3}},powf在名称空间std中被声明时包含(自C ++ 17以来明确提到,在C ++ 11/14中隐式提及,另请参见{{3} },current standardN4659)。对于std::powf,gcc libstdc ++在N4140时不符合要求。 --Fruderica(talk)03:49,2019年2月19日(太平洋标准时间)

     

另见最近,SO回答:N3337 - 酷比(谈话)2019年2月19日08:10(太平洋标准时间)

答案 1 :(得分:3)

仅使用pow - powf不是标准。

答案 2 :(得分:2)

它的名称为std::pow,已为floatdouble重载。