QT Creator, Syntaxüberprüfung für C ++ 11

7

Wie kann die Fehlerhighlighting (rote Welle unter dem Code) für C ++ 11-Zyklus-Bereich-basierte Operatoren deaktiviert werden?

%Vor% Die

Hover-Eingabeaufforderung zeigt "Unerwartetes Token : " an. Der Code kompiliert perfekt.

Ein weiteres Problem - die automatische Vervollständigung zeigt unique_ptr in std:: namespace nicht an, kompiliert jedoch OK.

  • Qt Creator 2.4.0 Basierend auf Qt 4.7.4 (32 Bit) Gebaut am 12. Dezember 2011 um 01:10:32
Tim Kachko 05.03.2012, 00:13
quelle

4 Antworten

4

Wenn Sie in C ++ 11 schreiben, sollten Sie von der Verwendung von QT Creator als IDE zur Verwendung von Eclipse CDT wechseln. Zumindest habe ich so dieses Problem gelöst. QT Creator scheint keine Möglichkeit zu haben, diese Syntaxprüfung in Echtzeit anzupassen. Eclipse dagegen ist in dieser Hinsicht weitgehend anpassbar.

Update: Ich denke, dass QtCreator seine Unterstützung für neuere Versionen von C ++ verbessert hat, seit diese Antwort gegeben wurde, also ist es nicht mehr korrekt. Ich kann es nicht löschen, da es eine akzeptierte Antwort ist.

    
Andrew Tomazos 05.03.2012, 21:56
quelle
10

Ich verstehe die Argumentationslinie in Andrews Antwort nicht. Warum sollte eine Anpassung der Syntax sinnvoll sein? Die Syntax ist entweder korrekt, wenn der Kontext von der Compilerbefehlszeile festgelegt wird, oder sie ist falsch. Wenn es falsch ist, sollte es als solches gekennzeichnet werden, wenn nicht, nicht. Wenn korrekter Code als falsch markiert wird, handelt es sich um einen Fehler oder zumindest um ein nicht unterstütztes Feature in der IDE, und es bedarf einer Korrektur, nicht einer "Anpassung".

Nachdem das gesagt wurde, das zitierte Beispiel

%Vor%

funktioniert hier gut (ziemlich neuer Build vom Masterzweig).

Zum anderen Kommentar zu Kate: Kates Syntaxhervorhebung wird von Qt Creator als Fallback in Fällen verwendet, in denen es keine spezifischere Syntaxhervorhebung für eine Datei gibt. Im Fall von C ++ (98/03/11) wird ein echtes Codemodell verwendet, nicht Kates Definitionen.

    
tullo 18.11.2012 00:27
quelle
5

Es gibt "Syntax Highlighting" (Färbung) und es gibt "Syntaxprüfung" (wellige Unterstreichungen). Die Syntaxfarbe scheint mit Kate in Zusammenhang zu stehen, wie @Koying andeutet. Sie können die Farben ändern und sie ausschalten. Ab Qt Creator 2.5.0 scheint es kein Problem mit meisten C ++ 11 Beispielen zu geben, die ich aus dem Internet einfügen möchte, obwohl Ihr Beispiel tatsächlich immer noch die Unterstreichung aufweist:

Ссылка

Zum Zeitpunkt des Schreibens (13. Juni 2012, etwa einen Monat nach der Veröffentlichung) ist das neueste integrierte SDK-Paket leider immer noch Qt Creator 2.4.1 installiert. : - /

Wenn dies das Boot ist, in dem jemand ist und das Neueste versuchen möchte, tu nicht, was ich getan habe , indem du deine Qt SDK-Installation mit /opt/QtSDK/SDKMaintenanceTool gelöscht hast ! Das verschwendete Zeit mit einer Neuinstallation, nach der ich ein sudo rm -r /opt/QtSDK/QtCreator ausführte und dann der neuen Qt Creator-Version mitteilte, dass sie auf /opt/QtSDK/QtCreator installiert werden sollte. Ich werde diesen Beitrag aktualisieren, wenn ich einen Haken mit dieser Wahl treffe!

Ссылка

ABER Obwohl es mit vielen C ++ 11-Konstrukten zu funktionieren scheint, tut es nichts für Ihr Beispiel oder den speziellen Fall, über den ich gestolpert bin, nämlich die unspaced<nested<syntax>> für Vorlagen.

(Anmerkung: Es mag wie eine kleine Sache erscheinen, aber es ist eine große C ++ 11-Funktion für mich. Ich hasse mit tailspaced<nested<syntax> > ... tun zu müssen führte mich dazu, immer fullyspaced< nested< syntax > > auf all Templates zu machen, um die Dinge konsistent zu halten, sogar in einfachen Fällen wie vector< int > . Jetzt, da sie den Compiler repariert haben, bin ich bereit, all dieses Whitespace-Rauschen zu eliminieren. )

Es scheint keine Möglichkeit zu geben, die wellenförmigen Unterstreichungen abzuschalten (, außer du kompilierst Qt Creator ) ??).

%Vor%

Wie auch immer, es ist eine verrückte Folge, die Arbeit des Compilers in der IDE zu duplizieren, anstatt die beiden Front-End-Codes zu teilen. Wir leben im dunklen Zeitalter der Software. Wird nicht jemand uns retten ? [/ rant]

Hier ist ein Teil des relevanten Codes (glaube ich):

Ссылка

... und der Lexer hier, notiere das Mitglied _cxx0xEnabled :

Ссылка

Neben der for-Syntax ist der Vorlagenabstand das einzige, was ich in C ++ 11 gefunden habe, das die Zeilen verursacht. Das ist wichtig genug für mich, dass ich meinen eigenen QtCreator bauen könnte, um es anzugehen!

    
HostileFork 14.06.2012 05:43
quelle
0

Qt Creator verwendet die Syntaxhervorhebungsdefinitionen aus dem Kate -Editor (von KDE). Siehe Extras-Optionen-Texteditor-Generischer Textmarker.

Wenn Kate eine Definition für c ++ 11 hat, können Sie sie verwenden oder Sie können Ihre eigenen entwickeln.

    
Koying 06.03.2012 02:09
quelle

Tags und Links