已弃用 (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
}
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈