C 向函数指针数组动态分配内存时出错
我在编译时遇到以下错误,错误C2099:initializer不是下一行的常量C 向函数指针数组动态分配内存时出错,c,C,我在编译时遇到以下错误,错误C2099:initializer不是下一行的常量 int kpSize = 4; int kpIdx = 0; typedef int (*EventHandler) (void *); EventHandler *keyFuncArray = (EventHandler *) malloc(sizeof(EventHandler) * kpSize); 不能使用malloc全局变量初始化 你必须写,例如: EventHandler *keyFuncArray
int kpSize = 4;
int kpIdx = 0;
typedef int (*EventHandler) (void *);
EventHandler *keyFuncArray = (EventHandler *) malloc(sizeof(EventHandler) * kpSize);
不能使用
malloc
全局变量初始化
你必须写,例如:
EventHandler *keyFuncArray = (EventHandler *) malloc(sizeof(EventHandler) * kpSize);
还可以看看:您不能使用
malloc
全局变量初始化
你必须写,例如:
EventHandler *keyFuncArray = (EventHandler *) malloc(sizeof(EventHandler) * kpSize);
另请看:您只能在全局范围内进行声明。因此函数调用不能在全局范围内执行。由于
malloc()
也是一个函数调用,因此无法执行
因此,您可以声明全局指针变量并在任何函数中初始化它(不限于
main
)。由于指针是全局的,因此在初始化任何函数后,它都是全局可用的。您只能在全局范围内进行声明。因此函数调用不能在全局范围内执行。由于malloc()
也是一个函数调用,因此无法执行
因此,您可以声明全局指针变量并在任何函数中初始化它(不限于
main
)。由于指针是全局的,因此在初始化任何函数后,它都是全局可用的。您的代码是否与您发布的代码类似?我的意思是keyFuncArray init作为全局变量是否在函数外部?如果是的,它是错误的。C++中的C. Work不允许这种初始化。错误C2099:初始化器不是常数,意味着全局变量的初始化值必须是常数。为什么动态地分配4个指针的全局数组?最好不要隐藏指针在<代码> TyPulf后面。如果您执行了typedef int-EventHandler(void*)
然后您可以大幅提高类型安全性,并消除指向函数指针的模糊指针:EventHandler*keyFuncArray=malloc(sizeof(EventHandler*[kpSize])代码>。我想不出一个指向函数指针的指针有意义的例子。你的代码像你发布的那样吗?我的意思是keyFuncArray init作为全局变量是否在函数外部?如果是的,它是错误的。C++中的C. Work不允许这种初始化。错误C2099:初始化器不是常数,意味着全局变量的初始化值必须是常数。为什么动态地分配4个指针的全局数组?最好不要隐藏指针在<代码> TyPulf后面。如果您执行了typedef int-EventHandler(void*)
然后您可以大幅提高类型安全性,并消除指向函数指针的模糊指针:EventHandler*keyFuncArray=malloc(sizeof(EventHandler*[kpSize])代码>。我想不出一个指向函数指针的指针有意义的例子。