Avviso del compilatore (livello 1) C5033
'storage-class-keyword' non è più una classe di archiviazione supportata
Le parole chiave della auto
classe di archiviazione e register
sono deprecate o rimosse dal linguaggio C++.
Osservazioni:
Visual Studio 2010 e versioni successive: in C++11 la auto
parola chiave non è più un identificatore di classe di archiviazione C++ e la register
parola chiave è deprecata.
Visual Studio 2017 versione 15.7 e successive: (disponibile in /std:c++17
modalità e versioni successive): la register
parola chiave viene rimossa dal linguaggio C++ in C++17 e versioni successive.
Lo standard C++ definisce un significato originale e uno rivisto per la parola chiave auto
. Prima di C++11, la auto
parola chiave dichiara una variabile nella classe di archiviazione automatica , ovvero una variabile con durata locale. A partire da C++11, la auto
parola chiave dichiara una variabile il cui tipo viene dedotto dall'espressione di inizializzazione nella relativa dichiarazione. Per garantire la compatibilità con le versioni precedenti, è possibile usare l'opzione del /Zc:auto
compilatore per controllare il significato della auto
parola chiave .
La register
parola chiave è stata originariamente pensata come suggerimento al compilatore per inserire una variabile in un registro. La parola chiave è stata ignorata regolarmente dai compilatori. I compilatori controllano invece se le variabili vengono inserite nei registri per soddisfare le convenzioni di chiamata e i livelli di ottimizzazione. La register
parola chiave è riservata nello standard per un uso futuro.
Esempio
// 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
Per risolvere questo problema, rimuovere la parola chiave dell'identificatore register
di classe di archiviazione.