[英]Why doesn't clang -Wunused-member-function warn about an unused member function?
我正在編譯一個非常基本的程序,試圖從-Wunused-member-function
觸發輸出。
TEST.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;
}
以下命令的輸出
clang++ -std=c++17 -Wall -Wunused -Wunused-member-function \ -Wunused-function -Wunneeded-member-function \ test.cpp -o test
不幸的是,甚至沒有一個警告。 我希望編譯器警告foo_unused
沒有被使用。
我在這里缺少不同的行為嗎? 否則,為什么不抱怨未使用的成員函數?
您必須將該類放在匿名命名空間中才能顯示警告:
namespace
{
class A {
public:
void foo() { std::cout << "Called foo" << std::endl; }
void foo_unused() { std::cout << "Unused foo" << std::endl; }
};
}
您現在可以看到警告: https : //godbolt.org/z/15Buo-
原因是此版本也可以激活對公共方法的clang檢查,因為您明確表示此類將無法在另一個翻譯單元中訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.