日本語
[効果的なC++] item 02

[効果的なC++] item 02

#define を使うなら const, enum, inline を思い浮かべましょう。

#define よりもConst, Enum, Inlineをより好む。

  • 前処理よりコンパイラを好むという表現。

#define FOO 1.024

  • 上記のケースは、コンパイル前に該当の文字列を置換する前処理機

  • 上記のFOOというシンボリックの存在をコンパイラが知らないうちに削除される可能性があり、エラーにも定数で表記される可能性があるため、関連するバグが発生した場合、追跡するのに時間を浪費することになります。

const double FOO = 1.024;

  • 解決策はマクロを定数に置き換えることです。

  • 上記の定数はコンパイラで確実に観測でき、シンボルテーブルにも確実に入力されます。また、前処理機を通じて一括して置換された場合、そのオブジェクトのコピーが複数生成される可能性がありますが、定数の場合はコピーが複数生成されません。

댓글 작성

게시글에 대한 의견을 남겨 주세요.

댓글 0