Hier ist der Fehler, den ich bekomme:
%Vor%Ich benutze ein cmake-Projekt ... Meine gcc-Version, installiert über brew, folgt:
gcc --Version Konfiguriert mit: --prefix = / Bibliothek / Entwickler / CommandLineTools / usr --with-gxx-include-dir = / usr / include / c ++ / 4.2.1 Apple LLVM Version 7.0.2 (clang-700.1.81) Ziel: x86_64-apple-darwin15.2.0 Threadmodell: posix
Ich konnte die Zeichenfolge ~ nicht finden, die irgendwo in den Headerdateien definiert ist. Am Ende änderte ich es wie folgt und das funktioniert. Es ist ok für meinen Anwendungsfall für jetzt.
%Vor%Dieses Original scheint korrekt zu sein und funktioniert perfekt in GCC auf Linux und CYGWIN. Was ist das Problem, das die Arbeit an Mac verhindert? Vorlagen? Etwas anderes?
Dies ist keine vollständige Antwort. Aus irgendeinem Grund funktioniert using namespace std;
, aber ohne das clang
fehlschlägt. Betrachten Sie dieses Beispiel:
Ohne die using namespace foo;
-Zeile liefert clang einen Fehler expected the class name after '~' to name a destructor
. Aber mit dieser Linie funktioniert es. Erweiterung auf std::string
:
es funktioniert. Es funktioniert auch mit der engeren using std::string;
.
Dies beantwortet nicht die Frage nach warum clang
fehlschlägt. Ich weiß nicht, ob es ein Fehler in clang
oder in gcc
ist. Aber es gibt zumindest einen Workaround.
Es kann sich lohnen, dies als Fehler in clang
zu melden und dann zu entscheiden, ob es wirklich ein Fehler ist oder nicht.