编译器警告(等级 1)C5033
“storage-class-keyword”不再是受支持的存储类
C++ 语言中已弃用或删除 auto
和 register
存储类关键字。
注解
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
存储类说明符关键字。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈