使用[[deprecated]]时,会发出3次警告

时间:2015-10-14 05:09:42

标签: c++ c++14

我发现this question/answer描述了使用[[deprecated]]作为C++14功能来指示编译器警告使用已弃用的函数。

我尝试在项目中的一个简单函数中使用它 - 警告发出了3次。我最初认为这可能是多个模板实例化,所以我测试了一个简单的程序。

[[deprecated]] void doNothing() {}

int main(){
    doNothing();
}

g++ -std=c++14 deprecatedTest.cpp输出

deprecatedTest.cpp: In function 'int main()':
deprecatedTest.cpp:4:5: warning: 'void doNothing()' is deprecated [-Wdeprecated-declarations]
     doNothing();
     ^
deprecatedTest.cpp:1:21: note: declared here
 [[deprecated]] void doNothing() {}
                     ^
deprecatedTest.cpp:4:5: warning: 'void doNothing()' is deprecated [-Wdeprecated-declarations]
     doNothing();
     ^
deprecatedTest.cpp:1:21: note: declared here
 [[deprecated]] void doNothing() {}
                     ^
deprecatedTest.cpp:4:15: warning: 'void doNothing()' is deprecated [-Wdeprecated-declarations]
     doNothing();
               ^
deprecatedTest.cpp:1:21: note: declared here
 [[deprecated]] void doNothing() {}

警告应该打印3次吗? (为了得到更多关注?)

这似乎是一种奇怪的行为,但我无法想象一个更简单的测试。

1 个答案:

答案 0 :(得分:2)

这是一个明显的实施质量问题,不太可能是故意的。

如果GCC Bugzilla尚未出现,请将其提升。

OP has raised this on Bugzilla, as suggested。 ☺