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



在我的项目中有一个文件包含在ifdef预处理器指令

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

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

是否有一种方法可以告诉分析器将此符号视为定义而无需在CMakeLists.txt中定义它?

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


更新:似乎这是目前JetBrains的一个公开问题。参见Issue pcp -2286

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

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

这允许你放入定义,以便在它不够聪明的情况下正确地呈现你的代码。

__JETBRAINS_IDE__宏的值是IDE的版本字符串。特定版本的宏存在于不同的Jetbrains ide: __CLION_IDE__, __STUDIO_IDE__(用于Android Studio)和__APPCODE_IDE__(用于AppCode)。

耶!

使用语法高亮显示:转到设置⇒编辑器⇒Colors&Fonts⇒C/c++并删除"有条件非编译代码"的所有刻度。这样,所有的代码都会以高亮显示的方式显示。

一般情况下任务无解决方案。但是!您可以找到目标和相关的解析上下文,其中定义了SOME_SYMBOL。

…在状态栏中,你可以找到解析上下文选择器,用于在Debug, Release, RelWithDebInfo和MinSizeRel上下文之间切换,以在IDE中解析具有所需定义的代码。

相关内容

  • 没有找到相关文章

最新更新