deprecated (C++)

In diesem Thema geht es um die microsoftspezifische dezimierte delspec-Deklaration. Informationen zum C++14-Attribut [[deprecated]] und Anleitungen zur Verwendung dieses Attributs im Vergleich zum Microsoft-spezifischen Dezilspec oder Pragma finden Sie unter C++-Standardattribute.

Mit den unten aufgeführten Ausnahmen bietet die deprecated Deklaration die gleiche Funktionalität wie das veraltete Pragma:

  • Mit der deprecated Deklaration können Sie bestimmte Formen von Funktionsüberladungen als veraltet angeben, während das Pragma-Formular für alle überladenen Formen eines Funktionsnamens gilt.

  • Mit der deprecated Deklaration können Sie eine Meldung angeben, die zur Kompilierungszeit angezeigt wird. Der Text der Meldung kann von einem Makro stammen.

  • Makros können nur mit dem deprecated Pragma als veraltet markiert werden.

Wenn der Compiler auf die Verwendung eines veralteten Bezeichners oder des Standardattributs [[deprecated]] stößt, wird eine C4996-Warnung ausgelöst.

Beispiele

Im folgenden Beispiel wird gezeigt, wie Funktionen als veraltet gekennzeichnet werden und wie eine Meldung angegeben wird, die bei Verwendung einer veralteten Funktion zur Kompilierzeit angezeigt wird.

// 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
}

Im folgenden Beispiel wird gezeigt, wie Klassen als veraltet gekennzeichnet werden und wie eine Meldung angegeben wird, die bei Verwendung einer veralteten Klasse zur Kompilierzeit angezeigt wird.

// 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
}

Siehe auch

__declspec
Schlüsselwörter