0
#define
はconst変数を "上書き"することができますか?それとも、コンパイラエラーにつながるでしょうか?#defineとconst宣言の優先順位
//ONE
#define FOO 23
const int FOO = 42;
//TWO
const int FOO = 42;
#define FOO 23
どちらの場合でもFOOにはどのような価値がありますか?
#define
はconst変数を "上書き"することができますか?それとも、コンパイラエラーにつながるでしょうか?#defineとconst宣言の優先順位
//ONE
#define FOO 23
const int FOO = 42;
//TWO
const int FOO = 42;
#define FOO 23
どちらの場合でもFOOにはどのような価値がありますか?
最初にコンパイルエラーが発生します。マクロは、その定義の点から見ることができます。
//ONE
#define FOO 23
const int 23= 42; //which would cause compilation error
2つ目は、このです:マクロはCで、ダムであるので
//TWO
const int FOO = 42;
#define FOO 23 //if you use FOO AFTER this line, it will be replaced by 23
++ const
とenum
はマクロよりも好まれる最初のものと等価である
。ここで私の答えを見てください。なぜマクロが悪いのかを説明しました。const
とenum
が良い選択です。
最も簡単な方法は、'#が何かをdefine'後は単に検索+は、すべての行に検索を交換しています。 – Schnommus