mingw C++ 不会编译 j0 函数

mingw C++ won't compile j0 funciton

我正在尝试使用 MingW (msys2) 在 Windows 上编译一个程序,但它因 j0 函数而失败。在 Linux 上编译没问题。当我在编译器上使用 -std=c++11 标志时,它似乎很讨厌。我怎样才能让它正确编译并打开 -std=c++11 标志?

示例代码:

#include <cmath>


int main( int argc, char *argv[] )
{
    float test = j0( 5 );
}

输出

$ g++ -std=c++11 test.cpp -o test
test.cpp: In function 'int main(int, char**)':
test.cpp:6:21: error: 'j0' was not declared in this scope
  float test = j0( 5 );

显然,MinGW只有在没有定义__STRICT_ANSI__时才定义贝塞尔函数,而在指定-std=c++11时才定义。通过在文件顶部添加 #undef __STRICT_ANSI__,我能够让您的代码在 MinGW 中编译。参见 https://sourceforge.net/p/mingw-w64/feature-requests/68/

您也可以试试 -std=gnu++11。参见