我发现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次吗? (为了得到更多关注?)
这似乎是一种奇怪的行为,但我无法想象一个更简单的测试。
答案 0 :(得分:2)