Welches vordefinierte Makro kann ich verwenden, um Clang zu erkennen?

Lesezeit: 1 Minute

Benutzeravatar von Pierre Bourdon
Pierre Bordon

Ich versuche, den Compiler zu erkennen, der zum Kompilieren meines Quellcodes verwendet wird. Ich kann leicht vordefinierte Makros finden, um nach MSVC oder GCC zu suchen (siehe http://predef.sourceforge.net/ zum Beispiel), aber ich kann kein Makro finden, um auf Clang zu prüfen.

Weiß jemand, ob clang ein Makro wie definiert __CLANG__ um zu wissen, was gerade meinen Code kompiliert?

Benutzeravatar von Chris Suter
Chris Suter

Verwenden Sie Folgendes, um eine Liste aller vordefinierten Makros zu erhalten, die der Compiler verwendet:

clang -dM -E -x c /dev/null

Sie können dasselbe für gcc tun.

Habe die Antwort mit gefunden strings + grep :

$ strings /usr/bin/clang | grep __ | grep -i clang
__clang__

Diese Frage wird seit Jahren beantwortet, aber lassen Sie mich (für zukünftige Referenzen) hinzufügen, wie es gemacht wird Windows:

echo | clang -dM -E -

wie bei GCC:

echo | gcc -dM -E -

Bitte beachten: Der letzte Bindestrich - ist eigentlich wichtig! (Sonst bekommt man error: no input files für beide Compiler)

  • FYI, Windows-Äquivalent von /dev/null ist NUL:

    – legalisieren

    6. November 2013 um 21:38 Uhr


  • @legalize Wow! Das wusste ich nicht! Das ist ziemlich toll; wo hast du das gefunden?

    – MDXF

    8. März 2017 um 17:09 Uhr

  • Es ist seit den DOS-Tagen da, nur die meisten DOS/Windows-Benutzer brauchten es nie.

    – legalisieren

    8. März 2017 um 18:49 Uhr

  • Das mache ich normalerweise auch unter Linux. Tippen /dev/null ist mehr Arbeit.

    – Peter Cordes

    9. Juli 2017 um 10:49 Uhr

1422410cookie-checkWelches vordefinierte Makro kann ich verwenden, um Clang zu erkennen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy