gpt4 book ai didi

c++ - 在 Linux 上使用 g++ 运行 clang scan-build

转载 作者:搜寻专家 更新时间:2023-10-31 01:35:30 27 4
gpt4 key购买 nike

我有以下代码:

#include <iostream>
#include <memory>

using namespace std;

class A
{
public:
void foo() const;
};

void A::foo() const {}

std::unique_ptr<A> foo2()
{
std::unique_ptr<A> pa(new A());
return pa;
}

void
foo()
{
const A& ra = *foo2();
ra.foo();
}

int
main()
{
foo();
return 0;
}

我正在尝试使用 clang 的扫描构建:

scan-build g++ --std=c++11 unique_ptr.cpp

这个程序用 g++ 编译和运行良好。我正在使用 CentOS 和 clang3.8 和 g++4.8.5。

错误信息:

 error: no type named 'unique_ptr' in namespace 'std'
std::unique_ptr<A> foo2()
~~~~~^

最佳答案

你应该使用:

scan-build g++ -std=c++11 unique_ptr.cpp

代替:

scan-build g++ --std=c++11 unique_ptr.cpp

-std 有效(而 --std 无效)因为 scan-build 专门检查 -std 标志。

clang/tools/scan-build/libexec/ccc-analyzer :

if ($Arg =~ /^-std=/) {
push @CompileOpts,$Arg;
next;
}

关于c++ - 在 Linux 上使用 g++ 运行 clang scan-build,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37282164/

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