Aviso do compilador (nível 1) C5033

'storage-class-keyword' não é mais uma classe de armazenamento com suporte

As palavras-chave das classes de armazenamento auto e register foram preteridas ou removidas da linguagem C++.

Comentários

Visual Studio 2010 e posterior: No C++11, a palavra-chave auto não é mais um especificador de classe de armazenamento do C++, e a palavra-chave register está preterida.

Visual Studio 2017 versão 15.7 e posterior: (disponível no modo /std:c++17 e posterior): a palavra-chave register foi removida da linguagem C++ no C++17 e padrões posteriores.

O padrão C++ define um significado original e um significado revisado para a palavra-chave auto. Antes do C++11 , a palavra-chave auto declara uma variável na classe de armazenamento automática; ou seja, uma variável que tem tempo de vida local. A partir do C++11, a palavra-chaveauto declara uma variável cujo tipo é deduzido da expressão de inicialização na própria declaração. Para compatibilidade com versões anteriores, você pode usar a opção do compilador /Zc:auto para controlar o significado da auto palavra-chave .

A palavra-chave register foi originalmente pensada como uma sugestão para o compilador colocar uma variável em um registro. Essa palavra-chave vivia sendo ignorada pelos compiladores. Em vez disso, os compiladores controlam se as variáveis são colocadas em registros para satisfazer as convenções de chamada e os níveis de otimização. A palavra-chave register está reservada no padrão para uso futuro.

Exemplo

// 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

Para corrigir esse problema, remova a palavra-chave register do especificador da classe de armazenamento.

Confira também

Classe de armazenamento