【发布时间】:2011-05-26 15:50:35
【问题描述】:
我有一个函数用来创建一个新的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()不是一个常数。常量在编译时确定,而对函数的调用要到运行时才能发生。 -
是的,我考虑了一下,这很有意义。那么只能在 C99 上工作?
标签: c compiler-errors