我在使用 XCode 编译库时出错:
'powf' 不是 'std' 的成员包括 .
有人可以向我解释发生了什么问题吗?
解决方案直到 C++11,powf 只是一个 微软主义.它根本没有出现在 ISO 标准中,所以不太可能出现在 XCode 中,除非他们适应微软的奇怪做法,我认为这不太可能.
另一方面,pow 已成为 C++ 库的一部分,因为它位于 C++ 11 之前的 C 库的早期迭代中.改用那个.
从 C++11 开始,powf 确实出现在 ISO 标准中,并且是 std 命名空间的一部分.
尽管如此,还是有不合规的实现,例如 gcc libstdc++.此摘录中的更多资源取自 cppreference 讨论页:>
上面发布的答案在 C++11 之前是正确的,因为 C++98/03 还没有引用 C99 库.根据现行标准,powf在包含时的命名空间 std(自 C++17 起明确提及,在 C++11/14 中隐含提及,另见 N4659、N4140 和 N3337).对于 std::powf,gcc libstdc++ 不兼容,而 clang libc++ 是.--Fruderica(谈话)2019 年 2 月 19 日 03:49(太平洋标准时间)
另见这个,最近的,SO 答案:stackoverflow/a/54735351 --Cubbi (谈话)2019 年 2 月 19 日 08:10(太平洋标准时间)
I have an error while compiling a library using XCode:
'powf' is not a member of 'std'
The <cmath> is included.
Can someone explain to me what is going wrong?
解决方案Up until C++11, powf was just a Microsoft-ism. It did not appear in the ISO standard at all so is unlikely to be in XCode unless they were to adapt Microsoft's bizarre practices, something I would think unlikely.
pow, on the other hand, has been part of the C++ library for longer by virtue of the fact that it's in earlier iterations of the C library that is incorporated into C++ pre-11. Use that instead.
Since C++11, powf does appear in the ISO standard and is part of the std namespace.
Nevertheless, there are non-compliant implementations e.g., gcc libstdc++. More resources in this excerpt taken from a discussion in cppreference talk page:
Answers posted above were correct before C++11, since C++98/03 hadn't referred C99 library yet. According to the current standard, powf is declared in namespace std when is included (explicitly mentioned since C++17, implicitly mentioned in C++11/14, see also N4659, N4140 and N3337). For std::powf, gcc libstdc++ is not compliant while clang libc++ is. --Fruderica (talk) 03:49, 19 February 2019 (PST)
See also this, more recent, SO answer: stackoverflow/a/54735351 --Cubbi (talk) 08:10, 19 February 2019 (PST)
更多推荐
'powf' 不是 'std' 的成员
发布评论