2012-10-15 5 views
9

Ich versuchte, -dumpversion zu verwenden, um festzustellen, ob der Compiler verwendbar ist. Mein Projekt kompiliert mit clang und neueren gccs, aber nicht mit dem alten gcc 4.2.1.Warum clang -dumpversion Bericht 4.2.1

Warum also klingelt so etwas wie ein alter gcc?

Zusätzliche Fragen, ist es möglich, diesen Wert zur Laufzeit zu ändern?

Oder hat jemand ein nettes Autoconf-Makro, um die Compiler-Version mit clang und gcc zu bestimmen?

+3

Welche Funktion des neueren Compilers benötigen Sie? Testen Sie dafür, nicht für welchen Compiler verwendet wird. –

Antwort

6

Clang wurde ursprünglich mit gcc 4.2.1 kompatibel geschrieben. Es gab some discussion über die Aktualisierung dieser Nummer früher in diesem Jahr, aber es gab Probleme.

Für die automatische Überprüfung schlägt clang vor, seine __has_feature extension zu verwenden. Clangs Dokument hat auch eine list of things you can check with __has_feature.

+1

Wird das __has_feature auch von gcc unterstützt? – arved

+0

Ich glaube nicht. – thakis

+0

__has_feature wäre toll, wenn sie auch eine __has_bug() - Liste von Attributen pflegten. Meistens muss ich meine Makefiles ändern, weil ich Workarounds für Bugs benötige, die für bestimmte Compiler typisch sind. – jstine