Avertissement du compilateur (niveau 1) C5033
' storage-class-mot clé' n’est plus une classe de stockage prise en charge
La auto
classe de stockage et register
les mot clé ont été déconseillées ou supprimées du langage C++.
Notes
Visual Studio 2010 et versions ultérieures : en C++11, le auto
mot clé n’est plus un spécificateur de classe de stockage C++ et le register
mot clé est déconseillé.
Visual Studio 2017 version 15.7 et ultérieure : (disponible en /std:c++17
mode et versions ultérieures) : le register
mot clé est supprimé du langage C++ en C++17 et versions ultérieures.
Le standard C++ définit une signification originale et une autre révisée pour le mot clé auto
. Avant C++11, la auto
mot clé déclare une variable dans la classe de stockage automatique ; autrement dit, une variable qui a une durée de vie locale. À compter de C++11, l’mot clé déclare une variable dont le auto
type est déduit de l’expression d’initialisation dans sa déclaration. Pour la compatibilité descendante, vous pouvez utiliser l’option du /Zc:auto
compilateur pour contrôler la signification de la auto
mot clé.
Le register
mot clé était initialement destiné à suggérer au compilateur de placer une variable dans un registre. La mot clé a été régulièrement ignorée par les compilateurs. Au lieu de cela, les compilateurs contrôlent si les variables sont placées dans des registres pour satisfaire aux conventions d’appel et aux niveaux d’optimisation. Le register
mot clé est réservé dans la norme pour une utilisation ultérieure.
Exemple
// c5033.cpp
// compile by using: cl /c /std:c++17 c5033.cpp
register int value; // warning C5033: 'register' is no longer a supported storage class
Pour résoudre ce problème, supprimez le register
spécificateur de classe de stockage mot clé.