ホームページ >バックエンド開発 >C++ >C の「register」キーワードが単なる提案であるのはどのような場合で、指示であるのはどのような場合ですか?

C の「register」キーワードが単なる提案であるのはどのような場合で、指示であるのはどのような場合ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-24 05:14:30811ブラウズ

When is the

C でキーワードを登録する : 違いを明らかにする

C では、構文 "int x=7" および "register int x=7" 」は似ているように見えるかもしれませんが、微妙な違いを意味します。 「register」キーワードは、変数がメモリではなくプロセッサ レジスタに格納されるべきであることをコンパイラに示唆します。

この区別は、格納期間の概念から生じます。デフォルトでは、「register」キーワードなしで宣言された変数はメモリに格納されるため、アクセス時間が遅くなります。対照的に、「register」でマークされた変数はレジスタ内に存在する可能性があり、アクセス速度が向上します。

ただし、「register」キーワードは単なるヒントであることに注意することが重要です。コンパイラは、次のような要因に基づいてこの要求に従う場合と従わない場合があります。

  • レジスタの可用性: すべてのレジスタが占有されている場合、コンパイラは「register」指定子を無視することがあります。 .
  • 変数の動作: 変数が頻繁に変更されたり参照によって渡されたりする場合、コンパイラはそれをレジスタに格納しないことを決定することがあります。

Herb Sutter,有名な C の専門家である彼は、著書「キーワードではない (または別の名前によるコメント)」でこの点を強調しています:

「レジスタ指定子は自動指定子と同じセマンティクスを持っています...」

この引用符は、「register」キーワードが「auto」指定子と同様に動作することを暗示しており、この指定子は、使用パターンに基づいて変数の保存期間を決定するようコンパイラに指示します。

最終的には、「 register" キーワードは微妙な最適化手法であり、必ずしも望ましいパフォーマンスの向上が得られるとは限りません。ただし、変数ストレージに関するプログラマの意図をコンパイラに通知する貴重なツールとして機能します。

以上がC の「register」キーワードが単なる提案であるのはどのような場合で、指示であるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。