指示声明有此属性的名字或实体被弃用,即允许但因故不鼓励使用。
[[deprecated]]
[[deprecated( 字符字面量 )]]
指示允许使用声明有此属性的名称或实体,但因故不鼓励使用。编译器通常会对其使用情况发出警告。若指定了 字符字面量,则它通常被包含于警告中。
下列名字或实体的声明中允许使用这个属性:
声明时未弃用的名字可被重声明为 deprecated
。声明为 deprecated
的名字不能通过重声明它而不带此属性变为未弃用。
编译此代码
#include <iostream>
[[deprecated]]
void TriassicPeriod() {
std::clog << "Triassic Period: [251.9 - 208.5] million years ago.\n";
}
[[deprecated("Use NeogenePeriod() instead.")]]
void JurassicPeriod() {
std::clog << "Jurassic Period: [201.3 - 152.1] million years ago.\n";
}
[[deprecated("Use calcSomethingDifferently(int).")]]
int calcSomething(int x) {
return x * 2;
}
int main()
{
TriassicPeriod();
JurassicPeriod();
}
会报如下编译警告
Triassic Period: [251.9 - 208.5] million years ago.
Jurassic Period: [201.3 - 152.1] million years ago.
main.cpp:20:5: warning: 'TriassicPeriod' is deprecated [-Wdeprecated-declarations]
TriassicPeriod();
^
main.cpp:3:3: note: 'TriassicPeriod' has been explicitly marked deprecated here
[[deprecated]]
^
main.cpp:21:5: warning: 'JurassicPeriod' is deprecated: Use NeogenePeriod() instead [-Wdeprecated-declarations]
JurassicPeriod();
^
main.cpp:8:3: note: 'JurassicPeriod' has been explicitly marked deprecated here
[[deprecated("Use NeogenePeriod() instead")]]
^
2 warnings generated.