簡體   English   中英

如何返回復合文字結構

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM