c - ‘{’ token 之前的预期表达式

标签 c pointers char expression

为什么会出现此错误以及如何解决?

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" });

另外,

  1. 使用空格;
  2. 注意 const 的正确性(指向字符串文字的指针应该是 const char *,同样,您的函数应该接受 const char *[] 参数) ;
  3. do NOT cast the return value of realloc() !

关于c - ‘{’ token 之前的预期表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20819429/

相关文章:

c - 指针、结构和输入

代码错误 无法插入字符

c - 分配值表而不更改变量名称或编写花哨的代码

java - 软件工程面试内存分配

c - 尝试编写一个程序来计算数组中偶数的数量并返回值

c - 为什么我无法让程序回答除 0.00 之外的任何内容?

c - 了解 c 中的内存分配和指针

c - 为什么没有第三个变量的交换在这里不起作用?

指针的 C++ 帮助,尤其是 "->"运算符

C语言中字符转二进制