【发布时间】:2016-01-26 16:40:19
【问题描述】:
我正在寻找一种方法来初始化一个结构并在一行中返回这个结构指针。 (便携方式是最好的,但至少对于 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" });
【问题讨论】:
-
我认为您使用的点命名初始化语法无论如何都是 GCC 扩展(因为您提到了可移植性)。
-
如果你希望它们在一行中,只需将它们放在同一行中即可。如果你的意思是你想使用相同的“;”,我相信没有办法,因为你需要在获取它的地址之前声明一个对象。
-
@szczurcio:请更新到 16 年前的 C 标准版本。自 C99 以来,指定的初始化程序是标准的。
标签: c pointers struct declaration