2015-02-06 72 views
-2
爲結構

我有以下代碼傳遞緩衝用C

int main(void) 
{ 

    Queue * queue1=createQueue(4000,100); 
    char * buffer; 
    //create the parameters 
    // 

    Parameters DataToSend[1]={{queue1,&buffer}}; 
} 

    typedef struct 
{ 

    Queue * QueueHandle; 

    void * content; 
}Parameters; 

我想緩衝區的內容或地址傳遞給DataToSend 我怎樣才能做到這一點在我的代碼,我有以下錯誤 的錯誤在線路

參數DataToSend

表達式必須具有恆定值

+0

請格式化您的代碼。請指出產生錯誤的行。請合併相關類型的定義。 – abligh 2015-02-06 21:02:37

+1

'參數DataToSend = {queue1,buffer};' – 2015-02-06 21:04:41

+1

@SouravGhosh'&buffer'不是一個常量表達式,'buffer'也不是。它會導致同樣的問題。 – ouah 2015-02-06 21:22:20

回答

0

C89要求結構對象的初始值設定項(更常用於聚合和聯合類型的對象)爲常量表達式。

Parameters DataToSend[1]={{queue1,&buffer}}; 

queue1是一個對象,所以不是一個常量表達式;它在C89中無效。

C99更改了此規則並允許不是常量表達式的結構初始化程序。檢查你的編譯器文檔是否可以切換到C99模式。