const の使い道ですか?
まず、マジックナンバーを避けるためというのがあります。
でも、マジックナンバーを避けるために const が必要でしょうか?
int XXX = 500; または #define XXX 500 としても、
マジックナンバーは回避できます。
次の例では const を付けない int は良くないことになります。
コード:
int XXX = 500;
char buf[XXX]; // C:*, C++:エラー
const int XXX = 500;
char buf[XXX]; // C:*, C++:OK
#define XXX 500
char buf[XXX]; // C:OK, C++:OK
*: C99 の可変長配列をコンパイラが実装していると OK、そうでないとエラー
マジックナンバーを回避するには #define が一番いいように思えます。
ヘッダファイルに記述して、複数のファイルからインクルードされても
エラーになりません。
複数のファイルに const int XXX = 500; があると、
C++ ではエラーになりませんが、C では多重定義のエラーです。
const が #define よりいいところは、
変数と同様に、スコープを局所的にできるとか、
単項&演算子でアドレスを取得できるところでしょうか。