Es gibt keine -W
Option für "#pragma einmal in der Hauptdatei", so dass Sie es nicht mit den üblichen Mitteln ausschalten können. (Allerdings sind die Clang Entwickler sehr bewusst, dass Warnungen ohne -W
Optionen saugen, und es gibt eine allgemeine Regel, dass neue Warnungen immer-W
Optionen. Den alten Code Aufräumen, leider wird für frustrierte als Übung . Benutzer)
Wenn Sie keine Shell hackery dagegen haben, könnten Sie so etwas wie dies immer tun:
# This gives the warning...
clang -c myheader.h
# ...This doesn't.
echo '#include "myheader.h"' | clang -c -x c++-header -o myheader.h.gch -
Die Hinter -
, wie üblich, bedeutet "von stdin lesen". Die -x c++
sagt Clang, welche Sprache Sie verwenden (da es nicht von der Dateierweiterung gibt, wenn keine Datei ist), und die Änderung c++
zu c++-header
bedeutet, dass wir eine .GCH-Datei anstelle einer .o Datei.
Die zwei so erzeugten Dateien .gch
sind NICHT bit-for-bit identisch. Ich weiß nicht genug über gch-Dateien, um Ihnen zu sagen, was an ihrem Verhalten erkennbar anders sein könnte. Da dir aber nur Clangs AST wichtig ist, wette ich, dass es dir gut gehen wird. :)
Das war das Problem, das ich hatte, weil ich $^in meinem Makefile als Abkürzung verwendet habe. – VaelynPhi