簡體   English   中英

為什么沒有clang -Wunused-member-function警告未使用的成員函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM