deprecated pragma

利用 deprecatedpragma,可以指示函数、类型或任何其他标识符不再受将来版本支持或者不应再使用。

注意

有关 C++14 [[deprecated]] 属性的信息,以及何时使用该属性(而不是 Microsoft __declspec(deprecated) 修饰符或 deprecatedpragma)的指导,请参阅 C++ 中的属性

语法

#pragma deprecated(identifier1 [ , identifier2 ... ])

注解

当编译器遇到由 deprecatedpragma 指定的标识符时,便会发出编译器警告 C4995

可以否决宏名称。 将宏名称包含在引号内,否则宏将展开。

由于 deprecatedpragma 适用于所有匹配的标识符,并且不考虑签名,因此这不是弃用特定版本重载函数的最佳选项。 引入范围的任何匹配函数名称都会触发警告。

建议尽可能使用 C++14 [[deprecated]] 属性,而不是 deprecatedpragma。 在许多情况下,特定于 Microsoft __declspec(deprecated) 的声明修饰符也是比 deprecatedpragma 更好的选择。 可利用 [[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
}

另请参阅

Pragma指令和__pragma_Pragma关键字