deprecated
pragma
利用 deprecated
pragma,可以指示函数、类型或任何其他标识符不再受将来版本支持或者不应再使用。
注意
有关 C++14 [[deprecated]]
属性的信息,以及何时使用该属性(而不是 Microsoft __declspec(deprecated)
修饰符或 deprecated
pragma)的指导,请参阅 C++ 中的属性。
语法
#pragma deprecated(
identifier1 [,
identifier2 ... ])
注解
当编译器遇到由 deprecated
pragma 指定的标识符时,便会发出编译器警告 C4995。
可以否决宏名称。 将宏名称包含在引号内,否则宏将展开。
由于 deprecated
pragma 适用于所有匹配的标识符,并且不考虑签名,因此这不是弃用特定版本重载函数的最佳选项。 引入范围的任何匹配函数名称都会触发警告。
建议尽可能使用 C++14 [[deprecated]]
属性,而不是 deprecated
pragma。 在许多情况下,特定于 Microsoft __declspec(deprecated)
的声明修饰符也是比 deprecated
pragma 更好的选择。 可利用 [[deprecated]]
属性和 __declspec(deprecated)
修饰符为重载函数的特殊形式指定弃用状态。 诊断警告仅在对属性或修饰符适用的特定重载函数的引用上显示。
示例
// pragma_directive_deprecated.cpp
// compile with: /W3
#include <stdio.h>
void func1(void) {
}
void func2(void) {
}
int main() {
func1();
func2();
#pragma deprecated(func1, func2)
func1(); // C4995
func2(); // C4995
}
以下示例说明如何否决类:
// pragma_directive_deprecated2.cpp
// compile with: /W3
#pragma deprecated(X)
class X { // C4995
public:
void f(){}
};
int main() {
X x; // C4995
}