MSVCで言語拡張機能が無効になっている場合、次のものを含めようとすると、このエラーが発生することがわかりましたboost/thread/thread.hpp。
致命的なエラーC1189:#error: "スレッドサポートが利用できません:"で明示的に無効にされてい
BOOST_DISABLE_THREADSます
Boostが言語拡張機能が無効になっている(_MSC_EXTENSIONS定義されていない)ことを検出すると、を定義BOOST_DISABLE_WIN32して、含めるのが安全ではないことを示しているようですwindows.h(拡張機能が有効になっていないとコンパイルされません)。
そして、その#defineの結果としてBOOST_DISABLE_THREADS、Boost.Threadはヘッダーのみのライブラリでwindows.hはなく、.cppファイルにのみ含まれているにもかかわらず、が定義されます。ヘッダーは、原則として、言語拡張なしで安全に使用できる必要があります。実際のwin32呼び出しはすべて、コンパイルされたライブラリ(.dllまたは.lib)に分離されています。
ここでは、彼らが問題を認識していることがわかりますが、過去2年間は手つかずのままであるため、迅速な修正を期待するのはおそらくナイーブです。
#ifdefいくつかの'とさまざまなBoost構成ファイルを変更するのはかなり単純なケースの#definesようですが、それらはたくさんあり、目的が明確でない多くのマクロを定義して使用しています。 。
言語拡張機能が無効になっているときにBoost.Threadヘッダーを含めることができるようにするための簡単なハックまたは回避策を知っている人はいますか?