已弃用 (C++)

本主题介绍 Microsoft 专用的 deprecated declspec 声明。 有关 C++14 [[deprecated]] 特性的信息,以及有关何时使用该特性与 Microsoft 专用的 declspec 或 pragma 的指导,请参阅 C++ 标准特性

在下面所示的异常中,deprecated 声明提供了与 deprecated pragma 相同的功能:

  • 利用 deprecated 声明,可以将函数重载的特殊形式指定为已弃用,而 pragma 形式适用于函数名称的所有重载形式。

  • 利用 deprecated 声明,可以指定在编译时显示的消息。 该消息的文本可以来自宏。

  • 只能使用 deprecated pragma 将宏标记为已弃用。

如果编译器遇到使用已弃用标识符或标准 [[deprecated]] 特性的情况,则会引发 C4996 警告。

示例

下面的示例演示在使用已弃用的函数时,如何将函数标记为已弃用以及如何指定在编译时将显示的消息。

// deprecated.cpp
// compile with: /W3
#define MY_TEXT "function is deprecated"
void func1(void) {}
__declspec(deprecated) void func1(int) {}
__declspec(deprecated("** this is a deprecated function **")) void func2(int) {}
__declspec(deprecated(MY_TEXT)) void func3(int) {}

int main() {
   func1();
   func1(1);   // C4996
   func2(1);   // C4996
   func3(1);   // C4996
}

下面的示例演示在使用已弃用的类时,如何将类标记为已弃用以及如何指定在编译时将显示的消息。

// deprecate_class.cpp
// compile with: /W3
struct __declspec(deprecated) X {
   void f(){}
};

struct __declspec(deprecated("** X2 is deprecated **")) X2 {
   void f(){}
};

int main() {
   X x;   // C4996
   X2 x2;   // C4996
}

另请参阅

__declspec
关键字