2

K&R 言う

コンパイラはアドバイス (登録宣言) を自由に無視できます。

を定義すると、gcc はどのような場合に無視しますregister int x = 4;か?

4

3 に答える 3

4

これは完全に実装依存です。

一般に、コンパイラが変数を登録することを信頼し、変数を自分で定義しないようにする必要があります。

C99 6.7.1 ストレージ クラス指定子

ストレージ クラス指定子を使用したオブジェクトの識別子の宣言は、オブジェクトregister へのアクセスが可能な限り高速であることを示唆しています。そのような提案が有効である範囲は、実装によって定義されます。

さらに、C++11 ではregisterキーワードを storage-class-specifier として使用することは推奨されていません。将来的には C でも同じことが行われる可能性があります。

于 2013-09-13T12:13:12.430 に答える
2
于 2013-09-13T12:15:49.487 に答える