我有以下代码
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 :(得分:0)
C89要求结构对象的初始值设定项(更常见的是聚合和联合类型的对象)是常量表达式。
Parameters DataToSend[1]={{queue1,&buffer}};
queue1
是一个对象,因此不是一个常量表达式;它在C89中无效。
C99更改了此规则并允许不是常量表达式的结构初始值设定项。如果可以切换到C99模式,请查看编译器文档。