編譯器警告 (層級 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 關鍵詞。