deprecated
pragma
Auf deprecated
pragma diese Weise können Sie angeben, dass eine Funktion, ein Typ oder ein anderer Bezeichner in einer zukünftigen Version möglicherweise nicht mehr unterstützt wird oder nicht mehr verwendet werden soll.
Hinweis
Informationen zum C++14-Attribut [[deprecated]]
und Anleitungen zur Verwendung dieses Attributs anstelle des Microsoft-Modifizierers oder despragmadeprecated
Microsoft-Modifizierers __declspec(deprecated)
finden Sie unter Attribute in C++.
Syntax
#pragma deprecated(
Bezeichner1 [,
Bezeichner2 ... ])
Hinweise
Wenn der Compiler auf einen durch einen deprecated
pragmaBezeichner angegebenen Bezeichner stößt, gibt er die Compilerwarnung C4995 aus.
Sie können Makronamen als veraltet deklarieren. Platzieren Sie den Makronamen in Anführungszeichen; andernfalls tritt eine Makroerweiterung auf.
Da dies deprecated
pragma bei allen übereinstimmenden Bezeichnern funktioniert und keine Signaturen berücksichtigt, ist es nicht die beste Option zum Veraltet bestimmter Versionen von überladenen Funktionen. Jeder übereinstimmende Funktionsname, der in den Bereich gebracht wird, löst die Warnung aus.
Es wird empfohlen, das C++14-Attribut [[deprecated]]
nach Möglichkeit anstelle des deprecated
pragma. Der microsoftspezifische __declspec(deprecated)
Deklarationsmodifizierer ist in vielen Fällen auch eine bessere Wahl als der deprecated
pragma. Mit dem [[deprecated]]
Attribut und __declspec(deprecated)
Modifizierer können Sie den veralteten Status für bestimmte Formen von überladenen Funktionen angeben. Die Diagnosewarnung wird nur für Verweise auf die spezifische überladene Funktion angezeigt, auf die das Attribut oder Modifizierer angewendet wird.
Beispiel
// 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
}
Das folgende Beispiel zeigt, wie Sie eine Klasse als veraltet deklarieren:
// pragma_directive_deprecated2.cpp
// compile with: /W3
#pragma deprecated(X)
class X { // C4995
public:
void f(){}
};
int main() {
X x; // C4995
}