gpt4 book ai didi

在没有 -fms-extensions 的情况下创建 "nested structs"?

转载 作者:太空宇宙 更新时间:2023-11-04 03:58:31 29 4
gpt4 key购买 nike

我有一个具有一些属性的结构:

struct a {
char* id;
int a;
int b;
int c;
}

我还有一个具有相同属性的结构,但没有 id

struct b {
int a;
int b;
int c;
}

我知道 C11 支持匿名结构,所以我可以这样做:

struct a {
char* id;
struct {
int a;
int b;
int c;
}
}

但是,如果我给内部结构一个标签,它就会失败。是否可以在不使用像 -fms-extensions 这样的非标准编译器选项的情况下创建这样的嵌套结构?

最佳答案

您可以在 C11 中为内部结构指定一个名称或一个标记,或者两者兼而有之(即不使用任何扩展名)。

没有标签也没有名字,你的内部结构是一个C11匿名结构:

struct a {
char* id;
struct {
int a;
int b;
int c;
};
};

如果给内部的匿名结构起个名字,它就不再是匿名结构了。它是常规的 C89/C99/C11 结构成员,您不能像匿名结构那样直接访问内部结构成员。

如果你给内部匿名结构一个标记(但仍然没有名字),它只是一个C89/C99/C11结构声明。没有添加成员,struct a 的声明是一样的:

struct a {
char* id;
};

关于在没有 -fms-extensions 的情况下创建 "nested structs"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14113522/

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