のように、ポインタの配列の宣言を強調するために括弧を入れようとすると、不可解な配列が見つかりました(int *) ptr[N];
。
GCC Cコンパイラは次のように述べています:
error: ptr undeclared (first use in this function)
.
誰でもエラーの原因を説明できますか?
のように、ポインタの配列の宣言を強調するために括弧を入れようとすると、不可解な配列が見つかりました(int *) ptr[N];
。
GCC Cコンパイラは次のように述べています:
error: ptr undeclared (first use in this function)
.
誰でもエラーの原因を説明できますか?
それは非常に簡単です: 変数ptr
は宣言されていません。いいえ、宣言で(int *) ptr[N];
はなく、配列添字式の型キャストです。
ポインターの配列が必要な場合は、次のようにする必要があります
int *ptr[N];
配列のN番目の要素をptr
整数ポインターにキャストしています。
エラー自体は、ptr
宣言されていないことを示しています。あなたは私の間違いを次のような行を忘れたか削除しました:
int *ptr[123];
については、N
通常は次のように定義されている const のようです。
#define N 42
コンパイラは ptr[N] をタイプ (int *) にキャストすると思います。
int a;
double b;
b = (double)a;
したがって、(int *)ptr[N] dosen には値が残っており、u は前に ptr を宣言することはありません。次に、gcc コンパイラーは u ptr が宣言されていないことを通知します。
多分あなたはこれを行うことができます
typedefine int* INT_PTR;
INT_PTR ptr[N];