const よりも #define を使用することの利点と欠点 (およびその逆) は何ですか?
悪いプログラミング プラクティス、特にマジック ナンバーについて読んだとき、#define をより頻繁に使用していることに気付きました。次のようないくつかの質問が頭に浮かびました。
#define をたくさん使うのは悪いことですか?
それはメモリスペースを必要としますか?
代わりに const を使用した方が速いでしょうか?
私はこれについて少し読みましたが、私が理解したことから、まだわかりません:
#define はマクロを定義し (マクロの意味がわからない)、前処理を扱います。コードが処理される前に、定義されたキーワードのすべてのインスタンスを別のものに置き換えます。一方、 const は、実行時に途中で値を変更できない変数です。
const の使用を考えられる唯一の理由は、値が他の変数に依存している場合です。例えば:
#define PI 3.14159f
#define RADIUS 3.0f
#define AREAOFCIRCLE PI*RADIUS*RADIUS
AREAOFCIRCLE のすべてのインスタンスが PI*RADIUS*RADIUS に置き換えられるため、AREAOFCIRCLE を使用するたびにプログラムが計算するため、非効率的です。一方で:
const float areaofcircle = PI*RADIUS*RADIUS;
プログラムは一度しか計算しないため、より効率的です。
元の質問に戻りますが、#define は const と比べてどうですか?