我用一個函數來創建一個新的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