C attribute: deprecated (since C23)
Indique que le nom ou l'entité déclaré avec cet attribut est déprécié , c'est-à-dire que son utilisation est autorisée, mais déconseillée pour certaines raisons.
Table des matières |
Syntaxe
[[
deprecated
]]
[[
__deprecated__
]]
|
(1) | ||||||||
[[
deprecated
(
littéral-de-chaîne
)
]]
[[
__deprecated__
(
littéral-de-chaîne
)
]]
|
(2) | ||||||||
| string-literal | - | texte qui pourrait être utilisé pour expliquer la justification de la dépréciation et/ou suggérer une entité de remplacement |
Explication
Indique que l'utilisation du nom ou de l'entité déclaré(e) avec cet attribut est autorisée, mais déconseillée pour une certaine raison. Les compilateurs émettent généralement des avertissements pour de telles utilisations. Le string-literal , s'il est spécifié, est généralement inclus dans les avertissements.
Cet attribut est autorisé dans les déclarations des noms ou entités suivants :
- struct / union : struct [ [ deprecated ] ] S ; ,
- typedef-name : [ [ deprecated ] ] typedef S * PS ; ,
- objets : [ [ deprecated ] ] int x ; ,
- membre de struct/union : union U { [ [ deprecated ] ] int n ; } ; ,
- fonction : [ [ deprecated ] ] void f ( void ) ; ,
- énumération : enum [ [ deprecated ] ] E { } ; ,
- énumérateur : enum { A [ [ deprecated ] ] , B [ [ deprecated ] ] = 42 } ; .
Un nom déclaré non obsolète peut être redéclaré obsolète. Un nom déclaré obsolète ne peut pas être rendu non obsolète en le redéclarant sans cet attribut.
Exemple
#include <stdio.h> [[deprecated]] void TriassicPeriod(void) { puts("Triassic Period: [251.9 - 208.5] million years ago."); } [[deprecated("Use NeogenePeriod() instead.")]] void JurassicPeriod(void) { puts("Jurassic Period: [201.3 - 152.1] million years ago."); } [[deprecated("Use calcSomethingDifferently(int).")]] int calcSomething(int x) { return x * 2; } int main(void) { TriassicPeriod(); JurassicPeriod(); }
Sortie possible :
Triassic Period: [251.9 - 208.5] million years ago.
Jurassic Period: [201.3 - 152.1] million years ago.
prog.c:23:5: warning: 'TriassicPeriod' is deprecated [-Wdeprecated-declarations]
TriassicPeriod();
^
prog.c:3:3: note: 'TriassicPeriod' has been explicitly marked deprecated here
[[deprecated]]
^
prog.c:24:5: warning: 'JurassicPeriod' is deprecated: Use NeogenePeriod() instead. [-Wdeprecated-declarations]
JurassicPeriod();
^
prog.c:9:3: note: 'JurassicPeriod' has been explicitly marked deprecated here
[[deprecated("Use NeogenePeriod() instead.")]]
^
2 warnings generated.
Voir aussi
|
Documentation C++
pour
deprecated
|