Ist ein eingebautes Makro definiert, wenn die Optimierung im Clang aktiviert ist?

9

Beim Kompilieren mit gcc wird das Makro __OPTIMIZE__ definiert, wenn Optimierungen aktiviert sind (siehe hier ). Dies ermöglicht Laufzeitwarnungen wie folgt:

%Vor%

Gibt es ein ähnliches Makro für den Klang? Ich konnte in die Dokumentation hier keinen finden.

Oder, noch besser, gibt es eine Möglichkeit, dies zu tun, die über alle Compiler funktioniert?

    
Timothy Jones 31.01.2013, 04:02
quelle

1 Antwort

5

Das __OPTIMIZE__ -Makro existiert auch beim clang und scheint genauso zu funktionieren wie in gcc (Ihr Beispielcode funktioniert gut).

Ich habe noch keine spezifische Dokumentation dazu gefunden, aber ich vermute, dass die Seite, die Sie verlinkt haben, einige klammspezifische Makros auflistet, die nicht von gcc übernommen wurden. Bearbeiten : Das stimmt nicht genau, da __COUNTER__ auch in gcc existiert.

Ich nehme an, dass diese Angelegenheit in clangs "Mission" fällt, so gut wie möglich mit gcc kompatibel zu sein:

  

Die Clang-Treiber- und Sprachfunktionen wurden absichtlich so entwickelt, dass sie mit dem GNU GCC-Compiler so gut wie möglich kompatibel sind, wodurch die Migration von GCC zu Clang erleichtert wird. In den meisten Fällen funktioniert der Code "einfach".

Quelle: Ссылка

Dieser kleine Befehl ist auch nützlich, um vom Compiler verwendete Makros aufzulisten:

%Vor%

Es funktioniert mit gcc, clang und vielleicht einigen anderen Compilern.

Bearbeiten : sieht so aus, als wäre es doch dokumentiert ... im Code:)

  

__ OPTIMIZE__ ist eine GNU-Erweiterung, die Clang implementiert, MSVC jedoch nicht. Gibt es dort ein gutes Äquivalent?

Quelle: Ссылка

    
lbonn 31.01.2013, 07:12
quelle

Tags und Links