结构声明和指针在一行中

rom*_*nux 1 c struct pointers declaration

我寻找一种方法来初始化一个结构并在一行中返回这个结构指针。(便携式方式是最好的,但至少对于 gcc)

例如,我得到了一个函数:

void myfunc(const mystruct_t *ptr);
Run Code Online (Sandbox Code Playgroud)

一个结构定义:

typedef struct mystruct_t{
    int field1;
    const char *field2;
}mystruct_t;
Run Code Online (Sandbox Code Playgroud)

我可以 :

const mystruct_t mystruct={.field1=23, .field2="myname" };
myfunc(&mystruct);
Run Code Online (Sandbox Code Playgroud)

我有办法在一行中做到这一点吗?

就像是 :

myfunc(&{.field1=23, .field2="myname" });
Run Code Online (Sandbox Code Playgroud)

nos*_*nos 5

您可以使用自 C99 起支持的复合文字

myfunc(&(mystruct_t){.field1=23, .field2="myname" });
Run Code Online (Sandbox Code Playgroud)