1. ホーム
  2. c++

[解決済み] C++のキーワードを登録する

2023-02-07 16:47:56

質問

とはどのような違いがあるのでしょうか?

int x=7;

register int x=7;

?

C++を使用しています。

どのように解決するのですか?

2010 年に存在した C++ では、キーワード "auto" または "register" を使用する有効なプログラムは、これらのキーワードを削除したものと意味的に同一になります (文字列化マクロまたはその他の同様のコンテキストで出現する場合を除く)。 その意味で、このキーワードはプログラムを正しくコンパイルするためには無意味なものです。 一方、キーワードは、マクロの不適切な使用が偽のコードを生成するのではなく、コンパイル時エラーを引き起こすことを確実にするために、特定のマクロのコンテキストで有用である可能性があります。

C++11 およびそれ以降のバージョンの言語では auto キーワードは、初期化されるオブジェクトの擬似型として再利用され、コンパイラーはこれを初期化式の型に自動的に置き換えます。 したがって、C++03 では、宣言が auto int i=(unsigned char)5; という宣言は次のものと同等でした。 int i=5; と同じで、ブロックコンテキストで使われる場合は auto i=(unsigned char)5; は制約違反でした。 C++11では auto int i=(unsigned char)5; が制約違反になったのに対して auto i=(unsigned char)5; と同等になり auto unsigned char i=5; .