deprecated
Nach oben zu Schlüsselwörter alphabetisch - Index
Inhaltsverzeichnis
Syntax
<entity declaration> [[deprecated]]
oder
<entity declaration> [[deprecated("message")]]
Beschreibung
Mit dem Attribut deprecated kennzeichnen Sie Ihre benutzerdefinierten Konstrukte als veraltet. Ein solches Konstrukt ist überholt, kann durch ein besseres ersetzt werden, sollte nicht weiter verwendet werden, oder könnte zukünftig nicht mehr unterstützt werden.
Wenn ein veraltetes Konstrukt gefunden wird, wird die Warnung W8111 Zugriff auf veraltete Entität %s (C++) ausgegeben. Die Warnung wird für alle veralteten Entitätstypen ausgegeben, auch für Variablen.
Die zweite Form der Syntax ermöglicht Benutzer, eine Meldung in der Warnung auszugeben. Die Meldung empfiehlt in der Regel, dass ein neueres Konstrukt verwendet werden soll.
Alle Beispiele gehen davon aus, dass die als deprecated deklarierten Entitäten, auch im Quelltext verwendet werden. Ansonsten wird keine Warnung ausgegeben
Die folgenden Konstrukte unterstützen das Attribut deprecated:
Aufzählungen
enum myEnum [[deprecated]] { e0, e1, e2 };
myEnum e = e1; //W8111 Accessing deprecated entity 'myEnum'
Globale Funktionen/Variablen
int x [[deprecated]];
void myFunc(int, int) [[deprecated("use myFunc(int,double) instead")]] {
}
void myFunc(int, double){
}
//...
myFunc(3,3); //W8111 Accessing deprecated entity 'myFunc(int,int)' use myFunc(int,double) instead
Klassen/Strukturen
class A [[deprecated]] {
} a0; //Warning
struct B [[deprecated]] {
} b0; //Warning
class C : A{
}
//...
C c0; //W8111 Accessing deprecated entity 'A'
Methoden und Felder
class A{
public:
int m_x [[deprecated]];
int m_y [[deprecated]];
A(int x, double y){}
A(int x, int y) [[deprecated("use the A(int,double) constructor")]]{} //W8111 Accessing deprecated entity 'A::A(int,int)' use the A(int,double) constructor
} a0(5,6);
//...
A a1(5,1.0);//No warning
a1.m_x=5; //W8111 Accessing deprecated entity 'A::m_x'
Template-Klassen
template <class T> class A {
public:
template <class T> class B [[deprecated]] {};
};
//...
A<int>::B<double> a0; //W8111 Accessing deprecated entity 'A<int>::B<double>'
Beispiel:
In SysUtils.hpp:
class PASCALIMPLEMENTATION EStackOverflow [[deprecated]] : public EExternal
Portabilität
POSIX | Win32 | Win64 | ANSI C | ANSI C++ | |
---|---|---|---|---|---|
deprecated |
+ |