[英]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.