我该如何将结构体复合字面量作为参数传递给函数?

7

这是我拥有的一个struct:

typedef struct 
{
    float r, g, b;
} color_t;

我想将这个结构体的复合字面量作为参数传递给一个函数,就像这样:

void printcolor(color_t c)
{
    printf("color is : %f %f %f\n", c.r, c.g, c.b);
}

printcolor({1.0f, 0.6f, 0.8f});

然而,这给了我一个错误:

错误:在“{”标记之前预期表达式


3
printcolor((color_t) {1.0f, 0.6f, 0.8f}); 这段代码中的语法看似强制类型转换,但实际上是一个复合字面量。请注意不要被语法所迷惑。 - mediocrevegetable1
1个回答

5
在C语言中,复合字面量(compound literal)必须在花括号内的初始化列表之前指定类型(使用类似于强制转换的语法)。因此,如评论中所述,您应该将函数调用更改为:
printcolor((color_t){1.0f, 0.6f, 0.8f});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接