Мне нужно мнение. GCC всегда был очень хорошим компилятором, но в последнее время он теряет «привлекательность». Я только что обнаружил, что в Windows GCC нет std::thread
поддержки, заставляющей пользователей Windows использовать другой компилятор, потому что самая захватывающая функция все еще отсутствует.
Но почему на самом деле GCC до сих пор не поддерживает потоки под Windows? Проблемы с лицензией? ABI несовместимости? (Хорошо, что уже есть несколько кроссплатформенных библиотек, использующих многопоточность: boost, POCO, SDL, wxwidgets и т. Д. Разве не было бы просто использовать уже существующий и лицензированный MIT / libpng код, подходящий для этой дыры, вместо доставки релизов GCC без поддержки потоков?)
Недавно, глядя на сравнения компиляторов, GCC имеет самую широкую поддержку функций C ++ 11 по сравнению с другими компиляторами, за исключением того факта, что в Windows это не так, потому что нам все еще не хватает атомарности, мьютексов и потоков:
Я хотел бы узнать больше об этой теме, но единственное, что я могу найти, это люди, которые обращаются за помощью, потому что:
"поток" не существует в пространстве имен std
Глядя на отслеживание заявок и обсуждения по почте GCC / TDM-GCC, с 2009 года были запросы на поддержку потоков. Возможно, что через 4 года все еще нет решения? Что на самом деле происходит?
источник
Ответы:
Я понял, что GCC теряет благосклонность, потому что люди, поддерживающие его, стали несколько высокомерными, и теперь, когда LLVM здесь (и это очень хорошо), люди голосуют ногами.
Slashdot обсудил новую поддержку LLVM для C ++ 11 . _мерлин говорит:
что связано с вашим наблюдением о 4-летней задержке.
источник
std::thread
Windows, которая поддерживается в VS2012 EE)thread_local
переменных)Популярность и удобство использования GCC не вызывает сомнений.
Но важным фактором является лицензия.
Другие важные соображения
С http://clang.llvm.org/comparison.html#gcc
С http://www.linuxquestions.org/questions/slackware-14/gcc-vs-llvm-931034/
связывать и использовать, например, для создания инструментов статического анализа кода, что становится все более и более важным ()
С http://clang.debian.net/
источник
-ftrack-macro-expansion
, теперь включенной по умолчанию :)foo
иmoo
являются указателями на разные типы структур, у обоих из которых есть поляbar
как часть их начальной последовательности, запись*&foo->bar
и чтение*&moo->bar
должны приводить к чтению, видящему запись, так как единственный эффективный тип, используемый в любом доступе, это типbar
. GCC, однако, похоже, отфильтровывает*&
и, таким образом, просачивает типыfoo
иmoo
...Причина, по которой это занимает много времени, состоит в том, что требуется много работы, чтобы получить прочную основу для построения заголовков на вершине. Казалось бы, mingw-w64 - это создать в Windows основанную на pthreads библиотеку. В этом есть меньшая раздражительность, чем введение зависимости от собственной многопоточности Windows API.
Mingw-w64 реализует
<thread>
и другие заголовки C ++ 11 поверх их собственнойwinpthreads
библиотеки. Это должно быть доступно для тестирования как в дистрибутивах Mingw-build, так и в Rubenvb набора инструментов mingw-w64. Я бы порекомендовал следовать спискам рассылки mingw-w64, если вы хотите отслеживать, где выполняется большая часть работы над родной Windows GCC.Проект Qt имеет вики-страницу с подробным описанием их текущих рекомендаций и обзором цепочек инструментов GCC на окнах, смотрите эту вики-страницу проекта Qt .
источник