2017-02-14 4 views
0

MingW(msys2)を使用してWindows上でプログラムをコンパイルしようとしていますが、j0関数で失敗します。 Linuxでは問題なくコンパイルできます。コンパイラで-std = C++ 11フラグを使用すると嫌に思えます。これを正しくコンパイルし、-std = C++ 11フラグをオンにするにはどうすればよいですか?mingw C++はj0関数をコンパイルしません

サンプルコード:

#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); 

答えて

3

どうやら、MinGWのは__STRICT_ANSI__が定義されていないだけベッセル関数を定義し、-std=c++11を指定した場合には、定義されています。ファイルの先頭に#undef __STRICT_ANSI__を追加して、コードをMinGWでコンパイルすることができました。 https://sourceforge.net/p/mingw-w64/feature-requests/68/

代わりに-std=gnu++11を試してみることもできます。 https://stackoverflow.com/a/19667112/10077

+0

これは本当に優れた答えです。 -std = gnu ++ 11を追加すると、問題はすばらしく解決されました。 –

関連する問題