我用一个函数来创建一个新的GQueue
C编译器错误 - 初始化不恒定
GQueue* newGQueue(int n_ele, int ele_size)
{
GQueue* q = (GQueue*) malloc(sizeof(GQueue));
if(!q) return NULL;
q->ptr = malloc(n_ele * ele_size);
if(!(q->ptr))
{
free(q);
return NULL;
}
q->in = q->out = q->count = 0;
q->size = n_ele; q->ele_size = ele_size;
return q;
}
我用这样的:
volatile GQueue * kbdQueue = newGQueue(10, 1);
然而,在出现下列编译错误此行:
Error: initializer element not constant
这是为什么发生? 10和1显然是常量,不应该在 C代码中打扰malloc
等。
只有标志是-Wall
。
感谢
我相信这是说'newGQueue()'不是一个常量。常量是在编译时确定的,而直到运行时才能调用函数。 – Gabe 2010-12-16 16:22:17
是的,我给了它一些想法,它是有道理的。那么只适用于C99? – 2010-12-16 16:24:16