C 向函数指针数组动态分配内存时出错

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

我在编译时遇到以下错误,错误C2099:initializer不是下一行的常量

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])。我想不出一个指向函数指针的指针有意义的例子。