为什么会出现此错误以及如何解决?
void add(struct Data* data,char* name, char* hobbies[])
{
size_t lenn=strlen(name);
data->name=(char*)realloc(data->name,lenn+1);
memcpy(data->name,name,lenn+1);
}
int main()
{
struct Data data;
s_init(&data);
add(&data,"Jose",{"Sing","Run"});
return 0;
}
错误:
ayuda.c:32:19: error: expected expression before ‘{’ token add(&data,"Jose",{"Sing","Run"});
最佳答案
使用 C99 复合文字使错误消失:
add(&data, "Jose", (const char *[]){ "Sing", "Run" });
另外,请
- 使用空格;
- 注意 const 的正确性(指向字符串文字的指针应该是
const char *
,同样,您的函数应该接受const char *[]
参数) ; - 和do NOT cast the return value of
realloc()
!
关于c - ‘{’ token 之前的预期表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20819429/