由于保留了“slots”关键字,Clang-Tidy 无法分析使用 Pybind11 的 QT 项目

问题描述 投票:0回答:1

我想使用 Clang-Tidy 来检查我在 QTCreator 中开发的 Cmake QT 项目。这是一个使用 Pybind11 与 Python 代码交互的 C++ 项目。

不幸的是,在此项目上从 QTCreator 中运行 Clang-tidy 总是失败,并出现以下错误:

C:\msys64\ucrt64\include\python3.12/object.h:352:23: error: expected member name or ';' after declaration specifiers [clang-diagnostic-error]
  352 |     PyType_Slot *slots; /* terminated by slot==0. */
      |     ~~~~~~~~~~~       ^
08:56:12: Error: Failed to analyze 1 files.

有关此错误的在线信息似乎很少。但我发现的似乎表明这是因为Python的object.h使用了

PyType_Slot *slots;

形式的保留关键字

有一篇文章建议定义

PYBIND11_NO_KEYWORDS
可以有所帮助 - 但我怀疑这是一个神话,因为我在任何地方都找不到多个对它的引用,并且搜索关键字不会在 python 安装目录中找到任何内容.

c++ qt clang-tidy
1个回答
0
投票

看起来一直在移动 Pybind11 标头的包含,之前 QT Headers 已修复它。

但是,这也适用于完整的包含树。因此,如果 A 包含 B,并且 B 包含 Pybind,则 A 应在包含任何 QT 标头(QObject、QProcess、QVector 等)之前包含 B

© www.soinside.com 2019 - 2024. All rights reserved.