Avertissement du compilateur (niveau 1) C5033
'storage-class-keyword' n’est plus une classe de stockage prise en charge
Les auto
mots clés de classe de stockage et register
les mots clés ont été dépréciés ou supprimés 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, le 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, le 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 du auto
mot clé.
Le register
mot clé était initialement destiné à la suggestion du compilateur de placer une variable dans un registre. Le mot clé a été régulièrement ignoré 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
mot clé du spécificateur de classe de stockage.