запуск clang scan-build с g++ на linux
У меня есть следующий код:
#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;
}
Я пытаюсь использовать scan-build от 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()
~~~~~^
1 ответ:
Вы должны использовать:
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; }