根据此处的讨论,我已向Ubuntu开发人员报告了一个错误。
编译以下示例c ++程序时:
#include <cmath>
#include <stdio.h>
int main()
{
printf("%f\n", std::cosf(0.0f));
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息: error: ‘cosf’ is not a member of ‘std’
包含math.h和使用非命名空间版本可以正常工作。到底是怎么回事?
我在Ubuntu 19.04上使用g ++ 8.3.0-6ubuntu1。
我正在与 g++ --std=c++17 test.cpp
https://en.cppreference.com/w/cpp/numeric/math/fabs页面提到std::fabsf自C ++ 11起可用。但是,当我使用G ++ 6.3.0甚至编译使用的最简单的程序时std::fabsf,它说fabsf也不是的成员std。
#include <cmath>
int main()
{
return (int)std::fabsf(0.0f);
}
Run Code Online (Sandbox Code Playgroud)
哪一个是对的?G ++ 6.3.0是否没有将其包含在其中std是错误的,还是上述页面将其作为stdC ++ 11的一部分提及时是错误的?
并且如果是G ++错误,那么在更高版本中是否已解决?
似乎gcc(尝试7.2.0和5.4.0)没有std :: expf和std :: logf-请参阅coliru 示例。由于cppreference表示它们是在C ++ 11中添加的,我是否缺少某些gcc特定宏,或者它们在gcc中总体上还是缺失的?