我有一个函数,它总是返回一个具有已知值的结构。语法是什么?
struct MyStruct Function(void)
{
return (struct MyStruct){1,2,3};
}
我在返回行上遇到编译错误:
错误:语法错误
有什么想法吗?我正在使用交叉编译器来嵌入目标,所以它可能是我的编译器。
编辑
这是我的编译器。正如cnicutar评论的那样,它是有效的C99代码。
有些人指出我可以创建一个变量。我的目标是避免创建一个变量来返回它。
答案 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)
,一行代码