Поделиться через


Предупреждение компилятора (уровень 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 (Класс хранения)