当我试图将括号强调为(int *) ptr[N];
中的指针数组的声明时,我发现了一个令人费解的数组。
GCC C编译器说:
error: ptr undeclared (first use in this function)
。
有人可以解释错误的根源吗?
答案 0 :(得分:3)
这很简单:变量ptr
尚未声明。不,(int *) ptr[N];
不是一个声明,它是数组下标表达式的类型转换。
如果你想要一个指针数组,你应该做
int *ptr[N];
答案 1 :(得分:2)
它将数组ptr
的 N 元素转换为整数指针。
错误本身指向永远不会声明ptr
。你忘记或删除了我这样的错误:
int *ptr[123];
关于N
它似乎是一个常量定义的常量,例如像这样:
#define N 42
答案 2 :(得分:1)
也许你可以这样做
typedefine int* INT_PTR;
INT_PTR ptr[N];
答案 3 :(得分:1)
我认为编译器会将ptr [N]转换为类型(int *),就像
一样 int a;
double b;
b = (double)a;
所以(int *)ptr [N] dosen已经离开了值,你之前从未声明过ptr。 那么gcc编译器会告诉你ptr unclared。