为CLion分析器定义预处理器符号

时间:2015-09-03 14:17:22

标签: preprocessor analysis clion

在我的项目中,有一个包含在ifdef预处理程序指令

中的文件
#ifdef SOME_SYMBOL
... entire file ...
#endif

SOME_SYMBOL由在此之前编译的另一个文件定义,并且代码按预期工作,但静态分析器不知道此符号,因此它处理SOME_SYMBOL未定义。整个文件没有语法突出显示,只是跳过了一些分析(例如语法错误突出显示)。

有没有办法告诉分析仪将此符号视为已定义但未在CMakeLists.txt中定义?

我没有选择在CMakeLists.txt中定义SOME_SYMBOL,因为项目取决于它在某些编译路径中未定义(更改这几乎是不可能的)。

更新:
似乎这是JetBrains目前的一个悬而未决的问题。见Issue CPP-2286

3 个答案:

答案 0 :(得分:1)

获取语法突出显示: 转到设置⇒编辑器⇒颜色和字体⇒C/ C ++并删除“有条件的非编译代码”的所有刻度。这样,所有代码都会显示通常的突出显示。

答案 1 :(得分:1)

Clion现在有一个可以用来检测IDE的宏: https://youtrack.jetbrains.com/issue/CPP-1296#comment=27-1846360

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

这允许你输入定义来使clion正确地渲染你的代码,以防它无法巧妙地弄明白。

__JETBRAINS_IDE__宏的值是IDE的版本字符串。针对不同的Jetbrains IDE存在特定版本的宏:__CLION_IDE____STUDIO_IDE__(适用于Android Studio)和__APPCODE_IDE__(适用于AppCode)。

耶!

注意:在撰写本文时,这仅适用于最新的CLION EAP。

答案 2 :(得分:0)