“#define”はプリプロセッサディレクティブです。ラベルと値を定義します。これらは、前処理されたソースコードのラベルが出現するたびに同じ場所に配置されます。タイプが定義されていないため、コンパイル前の文字列の基本的でばかげた置換です。コンパイル中にエラーや誤解を招く可能性があります。
“const int xxx”は型を定義し、そのインスタンスの値をロックします。この方法を使用する方が安全です。コンパイラは、タイプエラーをチェックし、間違いがあった場合はメッセージをスロー(またはコンパイルを中断)できます。
例:
#define A 5 int dummy_integer = A
…は次のように前処理されます…
int dummy_integer = 5
…そしてコンパイラはこのステートメントを読み取ります。
ただし、よく覚えている場合は、いつでも次のようにプリプロセッサディレクティブを上書きできます。
#define A 5 int dummy_integer = A //some code here #undef A #define A "my_string" std::cout << A
それは良くありません。代わりに、「const」修飾子を使用することにより、変数の値(または型)を変更することはできません(したがって、変数は「定数」として定義されます)。