int kpSize = 4;
int kpIdx = 0;
typedef int (*EventHandler) (void *);
EventHandler *keyFuncArray = (EventHandler *) malloc(sizeof(EventHandler) * kpSize);
我在编译时收到以下错误,错误C2099:初始化程序不是常量在下一行
EventHandler *keyFuncArray = (EventHandler *) malloc(sizeof(EventHandler) * kpSize);
答案 0 :(得分:3)
您不能使用malloc
全局变量初始化。
你必须写,例如:
EventHandler *keyFuncArray;
int main ()
{
keyFuncArray = malloc(sizeof(EventHandler) * kpSize)
// STUFF:..
return 0;
}
答案 1 :(得分:2)
您只能在全局范围内执行声明。因此函数调用不能在全局范围内执行。由于malloc()
也是一个函数调用,它无法执行。
因此,您可以声明全局指针变量并在任何函数中初始化它(仅限于main
)。由于指针是全局的,因此在初始化到任何函数之后它都是全局可用的。