0

#defineサイズの代わりにリテラルを使用すると、コンパイラからエラーが発生するのに、なぜ配列を宣言しようとするとエラーが発生するのでしょうか。

some_name.h:

#define size 10;

int* waitingBench[size];
4

3 に答える 3

7

あなたが持っているものは次のように前処理されます:

int* waitingBench[10;];
//                  ^ notice this guy!

からセミコロンを削除し#defineます。

(そしてsize、それは本当に悪い識別子#defineです。)

于 2012-10-13T10:45:48.537 に答える
5

定義からを削除;します。あなたが現在それを持っているので、これはint* waitingBench[10;];あなたが間違っていると知っている同等のものです。

マクロ定義はC命令ではないため、セミコロンで終了する必要はありません(また、行継続バックスラッシュを使用しない限り、1行を超えてはならず、他の何かと行を共有してはなりません)。

于 2012-10-13T10:45:37.323 に答える
2

削除する ";" 最終的には:

#define size 10
于 2012-10-13T10:45:46.673 に答える