分享方式:


編譯器警告 (層級 1) C5033

' storage-class-keyword ' 不再是支援的儲存體類別

autoregister 儲存類別關鍵字已被取代或從 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 關鍵字。

另請參閱

儲存類別