K&R 言う
コンパイラはアドバイス (登録宣言) を自由に無視できます。
を定義すると、gcc はどのような場合に無視しますregister int x = 4;
か?
K&R 言う
コンパイラはアドバイス (登録宣言) を自由に無視できます。
を定義すると、gcc はどのような場合に無視しますregister int x = 4;
か?
これは完全に実装依存です。
一般に、コンパイラが変数を登録することを信頼し、変数を自分で定義しないようにする必要があります。
C99 6.7.1 ストレージ クラス指定子
ストレージ クラス指定子を使用したオブジェクトの識別子の宣言は、オブジェクト
register
へのアクセスが可能な限り高速であることを示唆しています。そのような提案が有効である範囲は、実装によって定義されます。
さらに、C++11 ではregister
キーワードを storage-class-specifier として使用することは推奨されていません。将来的には C でも同じことが行われる可能性があります。