3

私のアクセントが痛かったらごめんなさい

C プログラミングでは、次のように関数を宣言できます。dennis riche 2nd ed page 84

 f(register unsigned m,register long n)

ほとんどの本では、関数の引数のデフォルトのストレージ タイプはregister.

なんでそうなの?必要性は何ですか?

答えに従ったコンパイラはそれらをCPUレジスタで保持しますが、

レジスタ型を使用した場合、実行速度に違いは見られませんでした

Cプログラミングでレジスタが使用される理由、場所、正確な時期を詳細に説明できる人はいますか?

ありがとう

4

1 に答える 1

6

どの本にそう書かれているのか興味があります。

正直なところ、この時点のコンパイラ テクノロジの状態では、register修飾子を使用して何かを宣言することはほとんどありません。実際、多くのコンパイラは単にこれを捨てて、やりたいことを何でもします。ポイントは、これはアーキテクチャやコンパイラによって大きく異なり、コンパイラによって行われる他の最適化の種類によっても影響を受けるということです。したがって、何かをレジスターに格納するかどうかの選択は、コンパイラーに任せた方がよい選択であり、register修飾子の使用は通常、古風なアンチパターンと見なされます。

編集:私は誤ってregister修飾子(型修飾子の使用とは一致しないので、知っておくべきだった)を修正しました...

于 2012-06-12T14:54:37.147 に答える