deprecated
Remonter à Liste alphabétique des mots clés - Index
Sommaire
Syntaxe
<entity declaration> [[deprecated]]
ou
<entity declaration> [[deprecated("message")]]
Description
Utilisez l'attribut deprecated pour indiquer que vos constructions sont désapprouvées. Une construction désapprouvée est ancienne ou obsolète, peut être remplacée par un meilleur substitut, n'est pas censée être utilisée ou risque de ne plus être prise en charge à l'avenir.
Si une construction désapprouvée est trouvée, un avertissement W8111 Accès à l'entité désapprouvée %s (C++) est déclenché. L'avertissement est déclenché pour tout type d'entité désapprouvée, notamment les variables d'un type désapprouvé.
La seconde forme de la syntaxe permet aux utilisateurs de générer un message dans l'avertissement. Le message recommande généralement la nouvelle construction qui doit être utilisée.
Le message d'avertissement est affiché si l'entité déclarée comme désapprouvée est utilisée dans le code, sinon il n'est pas affiché.
Les constructions qui prennent en charge l'attribut deprecated sont les suivantes :
Enumérations
enum myEnum [[deprecated]] { e0, e1, e2 };
myEnum e = e1; //W8111 Accessing deprecated entity 'myEnum'
Fonctions globales/Variables
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
Classes/Structures
class A [[deprecated]] {
} a0; //Warning
struct B [[deprecated]] {
} b0; //Warning
class C : A{
}
//...
C c0; //W8111 Accessing deprecated entity 'A'
Méthodes et champs
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'
Classes template
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>'
Exemple
Dans SysUtils.hpp :
class PASCALIMPLEMENTATION EStackOverflow [[deprecated]] : public EExternal
Portabilité
POSIX | Win32 | Win64 | ANSI C | ANSI C++ | |
---|---|---|---|---|---|
deprecated |
+ |