gpt4 book ai didi

c++ - 使用 clang-tidy 检查 c++17 代码

转载 作者:行者123 更新时间:2023-11-27 23:48:47 25 4
gpt4 key购买 nike

我在 Ubuntu 上安装了 clang-tidy:

sudo apt install clang-tidy

我在一个简单的 C++ 17 文件上运行它,得到了警告和错误:

/home/erelsgl/Dropbox/ariel/CPLUSPLUS/intro/01-single-file/ptr.cpp:17:3: warning: 'auto' type specifier is a C++11 extension [clang-diagnostic-c++11-extensions]
auto i = make_unique<int>();
^
/home/erelsgl/Dropbox/ariel/CPLUSPLUS/intro/01-single-file/ptr.cpp:17:12: error: use of undeclared identifier 'make_unique' [clang-diagnostic-error]
auto i = make_unique<int>();

我如何告诉 clang-tidy 根据 c++17 标准检查这个文件?

注意:要构建程序,我运行:

clang++-5.0 --std=c++17 ptr.cpp

最佳答案

根据您的编译器/clang-tidy 版本,用于编译源文件的默认 C++ 标准版本可能会有所不同。 clang 的默认标准版本是 gnu++-98(或从 clang 6.0 开始的 gnu++-14),通常 clang-tidy 具有与 clang 相同的默认值。

我猜测 -std=c++17(或 -std=c++1z)未在 C++ 编译器标志中指定,使用用于编译 ptr.cpp,因此 clang-tidy 回退到默认的 -std=gnu++98,因此对 C++11 代码发出警告。

要让 clang-tidy 处理 C++17,您应该按照@n.m. 的建议指定 -std 标志,作为 -extra-arg 的参数选项,例如:

clang-tidy -p 。 ptr.cpp -extra-arg=-std=c++17

编辑:

由于 clang++-5.0 用于编译 ptr.cpp,因此使用匹配的 clang-tidy 版本 5.0(在 Ubuntu 16.04 上,通过 apt 安装的默认 clang-tidy 版本是 3.8),即:

clang-tidy-5.0 -p 。 ptr.cpp -extra-arg=-std=c++17

如果尚未安装,您可以从以下位置获取它:
https://www.ubuntuupdates.org/package/xorg-edgers/xenial/main/base/clang-tidy-5.0

关于c++ - 使用 clang-tidy 检查 c++17 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48404289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com