Ich brauche eine Meinung. GCC war immer ein sehr guter Compiler, aber in letzter Zeit verliert es an "Anziehungskraft". Ich habe gerade festgestellt, dass GCC unter Windows keine std::thread
Unterstützung bietet, sodass Windows-Benutzer einen anderen Compiler verwenden müssen, da die aufregendste Funktion immer noch fehlt.
Aber warum unterstützt GCC unter Windows wirklich noch keine Threads? Lizenzprobleme? ABI-Inkompatibilitäten? (Nun, es gibt bereits mehrere plattformübergreifende Bibliotheken, die Multithreading verwenden: boost, POCO, SDL, wxwidgets usw. Wäre es nicht einfach, bereits vorhandenen und mit MIT / libpng-Lizenz versehenen Code zu verwenden, um diese Lücke zu schließen, anstatt GCC-Releases zu versenden ohne Thread-Unterstützung?)
Kürzlich hat GCC im Vergleich zu Compilern die umfassendste Unterstützung für C ++ 11-Funktionen im Vergleich zu anderen Compilern, mit Ausnahme der Tatsache, dass dies unter Windows nicht zutrifft, da uns immer noch Atomics, Mutexes und Threads fehlen: /
Ich würde gerne mehr über dieses Thema erfahren, aber das einzige, was ich finden kann, sind Leute, die um Hilfe bitten, weil:
"thread" existiert nicht im std Namespace
Mit Blick auf Ticketverfolgung und Mail-Diskussionen von GCC / TDM-GCC gab es seit 2009 Anfragen nach Thread-Support. Ist das nach 4 Jahren noch keine Lösung? Was ist wirklich los?
quelle
Antworten:
Ich habe verstanden, dass GCC in Ungnade fällt, weil die Leute, die es pflegen, etwas arrogant geworden sind, und jetzt, wo LLVM hier ist (und sehr gut ist), stimmen die Leute mit den Füßen ab.
Slashdot diskutierte über die neue Unterstützung von LLVM für C ++ 11 . _merlin sagt:
das stimmt mit Ihrer Beobachtung über die 4-Jahres-Verzögerung überein.
quelle
std::thread
Windows handelt, das in VS2012 EE unterstützt wird)thread_local
Variablen)Die Popularität und Benutzerfreundlichkeit von GCC ist nicht fraglich.
Ein wichtiger Gesichtspunkt ist jedoch die Lizenz.
Andere wichtige Überlegungen
Von http://clang.llvm.org/comparison.html#gcc
Von http://www.linuxquestions.org/questions/slackware-14/gcc-vs-llvm-931034/
Schnittstelle verwendet werden kann, um beispielsweise statische Code-Analysewerkzeuge zu erstellen, was immer wichtiger wird ()
Von http://clang.debian.net/
quelle
-ftrack-macro-expansion
, die jetzt standardmäßig aktiviert ist :)foo
undmoo
Zeiger auf verschiedene Strukturtypen sind, die beide ein Feldbar
als Teil ihrer Anfangssequenz haben, sollte das Schreiben*&foo->bar
und Lesen dazu*&moo->bar
führen, dass das Lesen das Schreiben sieht, da der einzige effektive Typ, der bei beiden Zugriffen verwendet wird, der Typ von istbar
. GCC scheint jedoch herauszufiltern*&
und versickert so die Arten vonfoo
undmoo
...Der Grund, warum es viel Zeit kostet, ist, dass es viel Arbeit kostet, ein solides Fundament zu schaffen, auf dem die Header erstellt werden. Die Art und Weise, wie mingw-w64 zu funktionieren scheint, besteht darin, eine solide, pthread-ähnliche Bibliothek unter Windows zu erstellen. Darüber herrscht weniger Empörung als die Einführung einer Abhängigkeit vom systemeigenen Threading der Windows-API.
mingw-w64 implementiert
<thread>
und die anderen C ++ 11-Header über ihre eigenewinpthreads
Bibliothek. Dies sollte zum Testen sowohl in Mingw-Builds als auch in Rubenvbs Distributionen der Mingw-W64-Toolchain verfügbar sein. Ich würde empfehlen, den Mailinglisten von mingw-w64 zu folgen, wenn Sie nachverfolgen möchten, wo die meisten Arbeiten an nativen Windows-GCC-Anwendungen ausgeführt werden.Das Qt Project verfügt über eine Wiki-Seite mit einer detaillierten Beschreibung der aktuellen Empfehlungen und einer Übersicht der GCC-Toolchains unter Windows. Weitere Informationen finden Sie auf dieser Wiki-Seite zu Qt Project .
quelle