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


Предупреждение компилятора (уровень 1) C5033

Класс хранилища ключевое слово больше не является поддерживаемым классом хранения

Класс auto хранилища и register класс хранилища ключевое слово были нерекомендуемы или удалены из языка C++.

Замечания

Visual Studio 2010 и более поздних версий. В C++11 auto ключевое слово больше не является описателями класса хранилища C++ и register ключевое слово устарели.

Visual Studio 2017 версии 15.7 и более поздних версий: (доступно в /std:c++17 режиме и более поздних версиях): register ключевое слово удаляется из языка C++ в 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 (Класс хранения)