如何在Mac上使用cmath贝塞尔函数



所以我使用的是带有XCode开发工具的Mac,根据其他答案,我应该使用以下工具进行编译:

g++ --std=c++17  test.cpp -o test

或者使用clang++,但我仍然很难让脚本找到特殊的功能。我还能尝试什么?

最小示例

#include <cmath>
#include <iostream>
int main(int argc, char *argv[]){
double x = 0.5;
double y = std::cyl_bessel_k(2,x);
std::cout << "x="<<x <<" -> y(x)="<<y <<std::endl;
return 0;
}

错误

main2.cpp:6:19: error: no member named 'cyl_bessel_k' in namespace 'std'
double y = std::cyl_bessel_k(2,x);
~~~~~^
1 error generated.

clang++13.0.0版

https://en.cppreference.com/w/cpp/numeric/special_functions/cyl_bessel_j说:

注释

不支持C++17但支持ISO 29124:2010的实现,如果__STDCPP_MATH_SPEC_FUNCS__由实现为至少201003L的值,并且如果用户在包括任何之前定义__STDCPP_WANT_MATH_SPEC_FUNCS__标准库标头。

不支持ISO 29124:2010但支持TR的实施19768:2007(TR1(,在标题tr1/cmath和命名空间CCD_ 6。

使用您的编译器版本,我检查了https://en.cppreference.com/w/cpp/compiler_support/17#C.2B.2B17_library_features看到Apple clang和clang++自己的stdlib都没有这些功能。坏消息!你需要获得它们,例如通过提升或自己实施。上的示例https://en.cppreference.com/w/cpp/numeric/special_functions/cyl_bessel_j实际上确实为您提供了一个实现。

最新更新