结构声明和指针在一行中

Struct declaration and pointer in one line

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

比如我得到一个函数:

void myfunc(const mystruct_t *ptr);

结构定义:

typedef struct mystruct_t{
    int field1;
    const char *field2;
}mystruct_t;

我能做到:

const mystruct_t mystruct={.field1=23, .field2="myname" };
myfunc(&mystruct);

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

类似于:

myfunc(&{.field1=23, .field2="myname" });

您可以使用 compound literal,自 C99 起受支持。

myfunc(&(mystruct_t){.field1=23, .field2="myname" });

使用 compound literalC99 之前的 gcc 扩展,自 C99 起受标准支持),类似

myfunc(&(mystruct_t){23, "myname"});

应该可以。

在 C++ 中,您可以通过构造函数执行此操作,但您需要使用 C99 复合文字。

注意:我知道它被标记为 C。这只是我想提供的另一种选择。