Ada*_*dam 5 c++ clang compiler-warnings
我正在编译一个非常基本的程序,试图触发-Wunused-member-function.
测试.cpp:
#include <iostream>
class A {
public:
void foo() { std::cout << "Called foo" << std::endl; }
void foo_unused() { std::cout << "Unused foo" << std::endl; }
};
int main() {
A obj;
obj.foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
以下命令的输出
clang++ -std=c++17 -Wall -Wunused -Wunused-成员函数 \
-Wunused-function -Wunneeded-member-function \
test.cpp -o 测试
不幸的是,甚至没有包含任何警告。我希望编译器会警告foo_unused不使用。
我在这里缺少什么不同的行为吗?否则,clang为什么不抱怨未使用的成员函数呢?
您必须将该类放入匿名命名空间中才能显示警告:
namespace
{
class A {
public:
void foo() { std::cout << "Called foo" << std::endl; }
void foo_unused() { std::cout << "Unused foo" << std::endl; }
};
}
Run Code Online (Sandbox Code Playgroud)
您可以看到现在有警告: https: //godbolt.org/z/15Buo-
原因是这个版本也可以激活对公共方法的 clang 检查,正如您明确指出的那样,此类在另一个翻译单元中将无法访问。