Dies wird kompiliert, wenn clang -std=gnu++11 -c test.cpp
:
Aber das gibt Fehler main.cpp:3:1: error: expected statement
:
Wenn ich mit clang -std=gnu++11 -S -emit-llvm main.cpp
kompiliere und den LLVM-Code anschaue, sieht es so aus, als ob die [[...]]
-Zeile keinen Effekt hat:
Irgendwelche Ideen warum? Fehler oder eine C ++ 11 Syntax oder GNU Extension Syntax?
Ich benutze clang von Xcode 4.4.1 (Apple kling Version 4.0 (tags / Apple / clang-421.0.60) (basierend auf LLVM 3.1svn).
Dies verwendet die Attributsyntax von C ++ 11. " random text here
" wird daher als Attribut angenommen. Nach der C ++ 11-Spezifikation kann ein Attribut viele Anweisungen und Deklarationen modifizieren.
Attribute können Anweisungen sein, aber sie müssen eigentlich Anweisungen sein. Dies bedeutet, dass sie wie viele andere C ++ - Anweisungen in ;
enden.
Die Menge der von einer Implementierung unterstützten Attribute ist implementationsdefiniert (und Clang unterstützt keine. Tatsächlich soll die Attributsyntax anscheinend überhaupt nicht unterstützt werden, laut der Website ). Attribute, die nicht von einer bestimmten Implementierung implementiert werden, sollten ignoriert werden, weshalb sie keine Auswirkungen haben.