7

この質問は死ぬまで行われてきました、そして私は列挙が行く方法であることに同意します。ただし、enumが最終的なコードでどのようにコンパイルされるかについて興味があります。#definesは単なる文字列の置換ですが、enumはコンパイルされたバイナリに何かを追加しますか?それとも、その段階では両方とも同等ですか。ファームウェアとメモリの書き込みが非常に限られている場合、どんなに小さくても、#definesを使用することに利点はありますか?

ありがとう!

編集:以下のコメントで要求されているように、埋め込まれているとは、デジタルカメラを意味します。

答えてくれてありがとう!私はすべてenumsです!

4

3 に答える 3

10

どちらも標準の用語では定数式であるため、コンパイル時に適切なコンパイラで完全に評価する必要があります。別のコードを生成するには、悪意を持って病理学的なコンパイラが必要になります。

于 2011-01-09T06:38:38.103 に答える
5

最終的には、 Anenumは単なる整数です。コンパイラは、の場合と同じように値を伝播しますconst

于 2011-01-09T06:34:51.337 に答える
4

他の方法でプロファイリングまたは測定せずに言うことは不可能です。

しかし、まともなコンパイラは大きな違いを示しません。さらに、効率的で読み取り不可能な、落とし穴のあるコードよりも、読み取り可能でタイプセーフなコードを常に優先する必要があります。次の2つのことを証明するまでは、読みやすさよりも効率を最適化することから始めないでください。

  1. あなたは実際に効率の向上が必要です
  2. 変更しているプログラムの一部は、プロファイラーによってボトルネックであることが示されています。
于 2011-01-09T06:36:24.200 に答える