編譯器警告 (層級 1) C5033
' storage-class-keyword ' 不再是支援的儲存體類別
auto
和 register
儲存類別關鍵字已被取代或從 C++ 語言中移除。
備註
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
storage-class specifier 關鍵字。