如何返回复合文字结构

时间:2011-10-18 17:52:19

标签: c struct

我有一个函数,它总是返回一个具有已知值的结构。语法是什么?

struct MyStruct Function(void)
{
    return (struct MyStruct){1,2,3};
}

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

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


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

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

3 个答案:

答案 0 :(得分:5)

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

这是无效的语法。尝试类似:

struct MyStruct Function(void)
{
    struct MyStruct s = {1,2,3};
    return s;
}

但最好显示如何声明MyStruct,以防万一。

答案 1 :(得分:0)

显而易见的方法是创建适当类型的变量:

struct MyStruct Function(void) { 
    struct MyStruct ret = {1,2,3};
    return ret;
}

答案 2 :(得分:0)

另一个方法是创建一个类似struct的构造函数:

struct MyStruct newMyStruct(int arg1, int arg2, int arg3) {
    struct myStruct;
    myStruct.a = arg1;
    // ...
    return myStruct;
}

现在,在函数中,您可以返回newMyStruct(1, 2, 3),一行代码