目次

#define vs. const

  • #define
    • #define命令はマクロが使用されて初めてチェックされる。
    • すべて固有のもの。
    • スコープは無限。
  • const
    • const文の構文はすぐにチェックされる。
    • Cの構文。
    • Cの通常のスコープ規則を適用できる。

 以上の理由により、constの方がよく使われる。

例1:簡単な定数の定義をするのには便利だが、大きなプログラムの場合は問題を起こしやすい

#define MAX 10

例2:安全

const int MAX = 10;

 const文は構造体クラスなども含めて、ほぼすべての型のC定数を定義できる。

例:

struct box{
	int width;
	int height;
};
const box this_box = {1.0, 4.5};

 しかしながら、条件付きコンパイルやその他の特別な場合には#defineを使うことになる。

参考文献

  • 『C実践プログラミング 第3版』