#define
■一部のテキストを他のテキストに置き換えるだけです。たとえば、次のように使用できます。
#define MAX_LINES ((num_lines > 15) ? 15 : num_lines)
MAX_LINES
次に、いくつかのステートメントで以前と同じように使用できます。ただし、すべての状況で機能するとは限りません。次のようなコードがあった可能性があります。
const char *lines[MAX_LINES];
古いものでは#define
、MAX_LINES
は15だったので、これに拡張されました。
const char *lines[15];
これは、標準に準拠したコンパイラで有効です。ただし、新しいを使用したとしましょう#define
。展開すると、次のようになります。
const char *lines[((num_lines > 15) ? 15 : num_lines)];
それがグローバル宣言だったとすると、それは無効になります。単なるローカル宣言であっても、コンパイラが可変長配列をサポートしている場合にのみ有効です。
もし私があなたなら、私はあなたがやろうとしていることを何でも手に入れようとし#define
ますMAX_LINES
。そうすればより明確になり、を使用することが無効になる場所がより明確になりますMAX_LINES
。