Предупреждение компилятора (уровень 1) C5033
"storage-class-keyword" больше не является поддерживаемым классом хранилища
auto
register
Ключевые слова класса хранилища устарели или удалены из языка C++.
Замечания
Visual Studio 2010 и более поздних версий. В C++11 auto
ключевое слово больше не является описателями класса хранилища C++, а register
ключевое слово устарело.
Visual Studio 2017 версии 15.7 и более поздних версий: (доступно в /std:c++17
режиме и более поздних версиях): register
ключевое слово удаляется из языка C++17 и более поздних версий.
Стандарт языка C++ определяет первоначальное и измененное значение ключевого слова auto
. Перед C++11 auto
ключевое слово объявляет переменную в классе автоматического хранилища, то есть переменную, которая имеет локальное время существования. Начиная с C++11 ключевое auto
слово объявляет переменную, тип которой выводится из выражения инициализации в объявлении. Для обратной совместимости можно использовать /Zc:auto
параметр компилятора для управления значением ключевого auto
слова.
Ключевое register
слово изначально было предложено компилятору разместить переменную в регистре. Ключевое слово обычно игнорируется компиляторами. Вместо этого компиляторы управляют тем, помещаются ли переменные в регистры для удовлетворения соглашений о вызовах и уровнях оптимизации. Ключевое register
слово зарезервировано в стандарте для дальнейшего использования.
Пример
// 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
Чтобы устранить эту проблему, удалите ключевое register
слово описателя класса хранилища.
См. также
Storage Class (Класс хранения)