Я только что обнаружил, что когда языковые расширения отключены в 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)
Я вижу здесь , что они знают о проблеме, но, поскольку она оставалась нетронутой в течение последних двух лет, вероятно, наивно надеяться на быстрое решение.
Похоже, это должен быть довольно простой случай изменения некоторых #ifdef
и #defines
в различных файлах конфигурации Boost, но их много, и они определяют и используют много макросы, цель которых мне не ясна.
Кто-нибудь знает простой взлом или обходной путь, позволяющий включать заголовки Boost.Thread, когда языковые расширения отключены?