将缓冲区传递给C中的struct

时间:2015-02-06 21:00:05

标签: c struct buffer

我有以下代码

    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

  

表达式必须具有常量值

1 个答案:

答案 0 :(得分:0)

C89要求结构对象的初始值设定项(更常见的是聚合和联合类型的对象)是常量表达式。

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

queue1是一个对象,因此不是一个常量表达式;它在C89中无效。

C99更改了此规则并允许不是常量表达式的结构初始值设定项。如果可以切换到C99模式,请查看编译器文档。