Partager via


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.

Voir aussi

Classe de stockage