0

我在 C++ 中有一个自定义断言系统,它使用std::source_location. clang 还不支持它,所以我实现了一个临时的 hack:#if defined(__clang__)使用 oldschool hack,比如__FILE__and __PRETTY_FUNCTION__#elseuse source_location

这一切都运作良好,花花公子,直到我开始在 clion 中工作,但使用 GCC 进行编译。Clion 使用 clangd,当 cmake 项目使用 gcc 配置时,它的行为方式很奇特。一些宏定义表明当前编译器是gcc(例如defined(__clang__)为假),其中一些表明它是clang(例如__has_builtin(__builtin_source_location)为假)。这导致我的断言周围出现非常奇怪的误报,无论我做什么,我都无法摆脱它们。

因此,我的问题是:clangd/clion 在静态分析代码时是否添加了一些神奇的定义,以便我可以欺骗他们不在我的断言周围显示该死的红色曲线?

4

0 回答 0