我在我必须为XCode编译的库上有这个错误。 < cmath>包括在内。
有人可以向我解释出现了什么问题吗?
感谢。
答案 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 standard和N4659)。对于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
,已为float
和double
重载。