gpt4 book ai didi

C 指向匿名结构的指针

转载 作者:太空狗 更新时间:2023-10-29 15:23:12 26 4
gpt4 key购买 nike

有没有办法获得指向匿名结构的指针?如果没有匿名结构,我可以编写以下内容:

struct a{
int z;
};
struct b{
int y;
struct a *x;
}

这工作正常,但我只在 struct b 中使用 struct a 并且用它污染全局命名空间似乎是多余的。有没有一种方法可以定义指向匿名结构的指针 (x)。可能类似于以下内容:

struct b{
int y;
struct {
int z;
} *x;
}

或者这本身有效吗?

最佳答案

是的,你可以做到这一点。但是有一个复杂的问题:没有办法直接声明另一个指向相同类型的指针 - 或者该类型的对象,因为......结构类型是匿名的。

但是仍然可以使用它,通过使用 malloc 为它分配内存,因为从 void * 到任何指向对象的指针的转换都是可能的,而无需显式转换:

struct b {
int y;
struct {
int z;
} *x;
} y;

y.x = malloc(sizeof *y.x * 5);

为什么你会认为这比污染命名空间更好,这超出了我的想象。


GCC 提供了 typeof,因此您可以通过类似的方式增加 insanity

typeof(y.x) foo;

甚至声明该类型的结构

struct b y;
typeof(y.x[0]) foo;
foo.z = 42;
y.x = &foo;

关于C 指向匿名结构的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53203535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com