-2

C++ faqから、「ローカルは最初の使用の近くで宣言する必要がある」と読みました。また、Scott Meyer の効果的な C++ 項目 26 も、パフォーマンス上の理由からそれを提案しています。しかし、私は最近、関数内で実際に使用されるスコープに関係なく、変数が定義されている場合は常にコンパイラが最適化するのに十分賢いと誰かから聞いたことがあります。そして、彼は、理解を容易にするために関数の先頭で変数を宣言することを提案しています(ただし、この理由は購入しません)。彼はコンパイラの最適化に関して正しいですか?

(問題は、パフォーマンスとコンパイラの最適化に関するものです。コードの読みやすさではありません)。

4

4 に答える 4

5

コンパイラはそれとは何の関係もありません。変数 (ローカルまたはその他) の定義に関しては、2 つの一般的な規則があります。スコープと可視性をできるだけ小さく保ち、可能であれば、定義で初期化します。これらのルールは、コンパイラではなく人間の読者向けです。そしてどちらも、当然の結果として、「最初の使用に近いローカルを宣言する」ことにつながります。

于 2012-09-27T09:30:54.337 に答える
2

はい、彼らは十分に賢いです。

しかし、ソフトウェアの技術的な答えもあります。プログラミング スタイルが優れているため、そうするべきです。

于 2012-09-27T09:29:23.090 に答える
0

変数を使用する場所の近くに変数宣言を配置すると、局所性が高まり、コードとプログラムの流れが理解しやすくなります。また、変数がネストされたスコープに配置されると、変数が宣言されたスコープを離れるときに「破棄」され、RAII などに役立ちます。

于 2012-09-27T09:29:55.727 に答える
0

読みやすく理解しやすいソースコードを書くよう常に努力する必要があります。

コンパイラがこれを最適化できたとしても、それを実行することをお勧めします。読みやすさが向上します。ブロックの先頭で変数が初期化された値をキャッシュして記憶する必要はありません。

于 2012-09-27T09:30:58.243 に答える