[英]C compiler error - initializer not constant
我有一个用于创建新GQueue
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显然是常量,不应该在前c99
C代码中打扰malloc
等。
只有标志是-Wall
。
谢谢
问题不在于newGQueue的参数,而是使用newGQueue返回值来初始化kbdQueue。 这是可执行代码,在C中,必须在编译时知道所有初始化程序。 这只是C中的一个问题; C ++会毫无问题地接受它。
如果你拆分声明和初始化它应该工作正常。
volatile GQueue * kbdQueue;
kbdQueue = newGQueue(10, 1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.