次の方法で共有


コンパイラ警告 (レベル 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 指定子キーワードを削除します。

関連項目

ストレージ クラス