2012-10-15 10 views
9

Stavo cercando di usare -dumpversion per determinare se il compilatore è utilizzabile. Il mio progetto compila con clang e gcc più recenti, ma non con il vecchio gcc 4.2.1.Perché clang -dumpversion report 4.2.1

Quindi perché il clang fa finta di essere un vecchio gcc?

Ulteriori domande, è possibile modificare questo valore in fase di esecuzione?

Oppure qualcuno ha una macro autoconf bella per determinare la versione del compilatore con clang e gcc?

+3

Quale caratteristica del nuovo compilatore ti serve? Prova per quello, non per quale compilatore viene utilizzato. –

risposta

6

Clang è stato originariamente scritto per essere compatibile con gcc 4.2.1. C'è stato some discussion sull'aggiornamento di quel numero all'inizio di quest'anno, ma c'erano dei problemi.

Per il controllo automatico, clang suggerisce di utilizzare il suo __has_feature extension. Il documento di Clang ha anche uno list of things you can check with __has_feature.

+1

La funzione __has_feature è supportata anche da gcc? – arved

+0

Io non la penso così. – thakis

+0

__has_feature sarebbe ottimo se avessero anche mantenuto un elenco di attributi __has_bug(). La maggior parte delle volte in cui devo modificare i miei makefile è perché devo fare soluzioni alternative per i bug specifici di alcuni compilatori. – jstine

Problemi correlati