我是 C 新手,我正在尝试理解复合文字的语法。我的问题类似于在 C 中初始化指向复合文字的指针,但我认为这并不能解决问题。如果有一个结构和一个类型定义为指向结构的指针,如下所示:
typedef struct thing *thing_t;
struct thing
{
int id;
char *name;
};
然后我可以创建一个thing_t
这样的:
thing_t instance = & (struct thing) {
.id = 1,
.name = "A"
};
我想知道是否有一种方法可以在thing_t
不显式引用的情况下初始化 a struct thing
,例如,我尝试这样做以查看它是否是有效的语法:
thing_t instance = (* thing_t) {
.id = 1,
.name = "A"
};
但编译器错误。编译器必须“知道”该thing_t
类型包含一个指向 a 的指针thing
,但是是否存在允许在这种情况下互换使用两者的语法?
(我对此没有特定的用例,我只是想了解类型和结构是如何相关的)。