如何返回复合文字结构

Rob*_*ert 13 c struct

我有一个函数,它将始终返回具有已知值的结构.语法是什么?

struct MyStruct Function(void)
{
    return (struct MyStruct){1,2,3};
}
Run Code Online (Sandbox Code Playgroud)

我在返回行上收到编译器错误:
错误:语法错误

有任何想法吗?我正在使用交叉编译器来嵌入目标,所以它可能是我的编译器.


编辑
它是我的编译器.正如cnicutar评论的那样,它是有效的C99代码.

有人指出我可以创建一个变量.我的目标是避免创建一个变量来返回它.

sid*_*yll 5

看起来你正在尝试将初始化程序转换为结构:-)

这不是有效的语法.尝试类似的东西:

struct MyStruct Function(void)
{
    struct MyStruct s = {1,2,3};
    return s;
}
Run Code Online (Sandbox Code Playgroud)

但是为了MyStruct以防万一,最好显示确切的声明.

  • 不,OP 没有投射任何内容,而是返回复合文字。但这是一个 C99 功能,显然并不普遍。 (2认同)

Jer*_*fin 1

最明显的方法是创建适当类型的变量:

struct MyStruct Function(void) { 
    struct MyStruct ret = {1,2,3};
    return ret;
}
Run Code Online (Sandbox Code Playgroud)