2015-09-03 17 views
11

In meinem Projekt gibt es eine Datei in einer ifdef Präprozessordirektive eingeschlossendefinieren Präprozessorsymbole für CLION Analysator

#ifdef SOME_SYMBOL 
... entire file ... 
#endif 

SOME_SYMBOL durch eine andere Datei definiert ist, die vor diesem kompiliert und der Code funktioniert wie erwartet, aber die statische Der Analyzer kennt dieses Symbol nicht und behandelt daher SOME_SYMBOL nicht definiert. Die gesamte Datei weist keine Syntaxhervorhebung auf und einige der Analysen werden einfach übersprungen (z. B. Syntaxfehlerhervorhebung).

Gibt es eine Möglichkeit, dem Analysator mitzuteilen, dass dieses Symbol wie definiert behandelt wird, ohne es in CMakeLists.txt zu definieren?

Ich habe nicht die Möglichkeit, SOME_SYMBOL in CMakeLists.txt zu definieren, da das Projekt davon abhängt, dass es in einigen Kompilierpfaden nicht definiert ist (eine Änderung wäre fast unmöglich).

Update:
Scheint so, als sei dies derzeit ein offenes Problem mit JetBrains. Siehe Issue CPP-2286

+1

Möglicherweise müssen Sie den geeigneten Einschlusskontext für die Datei finden. Wenn Sie eine sichtbare Statusleiste haben, können Sie die Dropdown-Liste "Kontext:" in der rechten unteren Ecke sehen. Probier es einfach aus. – uta

Antwort

1

Syntaxhervorhebung zu erhalten: Gehen Sie zu Einstellungen ⇒ ⇒ Editor Farben & Fonts ⇒ C/C++ und entfernen Sie alle Zecken für 'Bedingtes nicht-kompilierten Code'. Auf diese Weise wird der gesamte Code mit der üblichen Hervorhebung angezeigt.

+0

Danke, aber ich kann keine Checkbox mit einer Beschriftung wie "Bedingt nicht kompilierter Code" finden. – Neowizard

+0

Danke, das funktioniert - es wird nur nicht in der Vorschau angezeigt, dass Hervorhebung für diese Blöcke wiederhergestellt wird. – Stecman

1

Clion hat jetzt ein Makro, das Sie die IDE erkennen, verwenden können: https://youtrack.jetbrains.com/issue/CPP-1296#comment=27-1846360

#ifdef __JETBRAINS_IDE__ 
    // Stuff that only clion will see goes here 
#endif 

Auf diese Weise können Sie definiert setzen, um Clion machen Ihren Code richtig in Fällen, in denen es zu machen kann nicht schlau genug sein, um es herauszufinden.

Der Makrowert __JETBRAINS_IDE__ ist eine Versionszeichenfolge für die IDE. Bestimmte Versionen des Makros existieren für verschiedene Jetbrains IDEs: __CLION_IDE__, __STUDIO_IDE__ (für Android Studio) und __APPCODE_IDE__ (für AppCode).

Yay!

Hinweis: Zum Zeitpunkt des Schreibens ist dies nur im aktuellen CLion EAP verfügbar.