Compartir a través de


Advertencia del compilador (nivel 1) C5033

"storage-class-keyword" ya no es una clase de almacenamiento admitida

Las palabras clave de clase de almacenamiento auto y register quedaron en desuso o se quitaron del lenguaje C++.

Comentarios

Visual Studio 2010 y versiones posteriores: en C++11, la palabra clave auto ya no es un especificador de clase de almacenamiento de C++ y la palabra clave register está en desuso.

Visual Studio 2017, versión 15.7 y posteriores: (disponible en modo /std:c++17 y posteriores): la palabra clave register se quita del lenguaje C++ en los estándares C++17 y posteriores.

El estándar C++ define un significado original y uno revisado de la palabra clave auto. En las versiones anteriores a C++11, la palabra clave auto declara una variable en la clase de almacenamiento automatic; es decir, una variable que tiene una duración local. A partir de C++11, la palabra clave auto declara un variable cuyo tipo se deduce de la expresión de inicialización de su declaración. Para cumplir con la compatibilidad con versiones anteriores, puede usar la opción del compilador /Zc:auto para controlar el significado de la palabra clave auto.

La palabra clave register se pensó originalmente como una sugerencia para que el compilador coloque una variable en un registro. Los compiladores pasan por alto rutinariamente la palabra clave. En su lugar, los compiladores controlan si las variables se colocan en los registros para satisfacer las convenciones de llamada y los niveles de optimización. La palabra clave register está reservada en el estándar para su uso futuro.

Ejemplo

// 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 corregir este problema, quite la palabra clave del especificado de clase de almacenamiento register.

Consulte también

Clase de almacenamiento