结构声明和指针在一行中
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 literal(C99
之前的 gcc 扩展,自 C99
起受标准支持),类似
myfunc(&(mystruct_t){23, "myname"});
应该可以。
在 C++ 中,您可以通过构造函数执行此操作,但您需要使用 C99 复合文字。
注意:我知道它被标记为 C。这只是我想提供的另一种选择。
我在一行中寻找一种初始化结构和 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 literal(C99
之前的 gcc 扩展,自 C99
起受标准支持),类似
myfunc(&(mystruct_t){23, "myname"});
应该可以。
在 C++ 中,您可以通过构造函数执行此操作,但您需要使用 C99 复合文字。
注意:我知道它被标记为 C。这只是我想提供的另一种选择。