gcc -std=c++11
を使ってCygwinでプログラムをコンパイルできないことがあります。ヘッダーはOKをコンパイルします(boost/asio.hppのように、定義が欠落していない限り)。さて、Cygwinの#ifdef
マクロは、C++ 11環境でいくつかの関数定義をバイパスするので、プログラムはそうではないかもしれません。同じソースファイルがFedora Linuxで同様にコンパイルされている場合は、これは発生しません。gcc -std = C++ 11を使用しているときにCygwinでいくつかのシステム関数が定義されていないのはなぜですか?
このサンプルプログラムは、GCCを使用してコンパイルに失敗-std = C++ 11オプション:
#include <boost/asio.hpp>
int main() { return 0; }
私が最初に上記のプログラムをコンパイルしなかったことを発見することで、これを発生したが、その後、さらに多くの類似しました更新された標準を使用して既存のコードを再コンパイルするときの問題。
私が見つけたインクルードセクションは、返信に記載されています。 、あなたのソースコードで
他が含ま前
#define _GNU_SOURCE
を含める:
代わりに '-std = gnu ++ 11'を使用していないのはなぜですか? –
ありがとう@MarkGlisse。私はドキュメントにある 'C++ 11'オプションを使用しました。私はあなたがそれを指摘するまで、新しい標準を指定する別の方法があることに気づいていませんでした(あなたの方法は良いですが、ブーストをアップグレードまたは再インストールしても問題は発生しません)。 – FNE