[英]How to return a compound literal struct
我有一個函數,它總是返回一個具有已知值的結構。 語法是什么?
struct MyStruct Function(void)
{
return (struct MyStruct){1,2,3};
}
我在返回行上收到編譯器錯誤:
錯誤:語法錯誤
有任何想法嗎? 我正在對嵌入式目標使用交叉編譯器,因此它可能是我的編譯器。
編輯
這是我的編譯器。 正如 cnicutar 評論的那樣,它是有效的 C99 代碼。
有人指出我可以創建一個變量。 我的目標是避免創建一個變量只是為了返回它。
看起來您正試圖將初始化程序轉換為結構 :-)
這不是有效的語法。
嘗試類似:
struct MyStruct Function(void)
{
struct MyStruct s = {1,2,3};
return s;
}
但最好顯示MyStruct
是如何聲明的,以防萬一。
顯而易見的方法是創建一個適當類型的變量:
struct MyStruct Function(void) {
struct MyStruct ret = {1,2,3};
return ret;
}
另一種方法是創建一個結構構造函數,如:
struct MyStruct newMyStruct(int arg1, int arg2, int arg3) {
struct myStruct;
myStruct.a = arg1;
// ...
return myStruct;
}
現在,在函數中你可以返回newMyStruct(1, 2, 3)
,一行代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.