编译器警告(等级 1)C5033

storage-class-keyword”不再是受支持的存储类

C++ 语言中已弃用或删除 autoregister 存储类关键字。

注解

Visual Studio 2010 及更高版本:在 C++11 中,关键词 auto 不再是 C++ 存储类说明符,且关键词 register 被弃用。

Visual Studio 2017 版本 15.7 及更高版本:(在模式 /std:c++17 及更高版本中可用):关键字 register 已从 C++ 17 及更高版本中的 C++ 语言中删除。

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 存储类说明符关键字。

另请参阅

存储类