gpt4 book ai didi

c - 使用 ANSI C 的匿名结构

转载 作者:行者123 更新时间:2023-12-04 01:57:48 25 4
gpt4 key购买 nike

我想知道是否可以在 ANSI C 中声明匿名结构。我的代码是:

struct A
{
int x;
};

struct B
{
struct A;
int y;
};

当我编译它时,我得到:警告:声明不声明任何东西

我读到标志 -fms-extensions 可以解决问题,但它只适用于 Windows 系统,因为它会产生:警告:匿名结构是 Microsoft 扩展 [-Wmicrosoft]

是否有任何我可以使用的 ANSI 等效扩展?

最佳答案

在 ANSI C 中几乎获得此功能的一个技巧是使用适当的宏:

struct A {
int x;
};

struct B {
struct A A_;
int y;
};

#define bx A_.x

然后你可以简单地做

struct B foo, *bar;

foo.bx;
bar->bx;

虽然在 C11 中,支持匿名结构,您可以简单地做

struct B {
struct {
int x;
};

int y;
}

可惜不是

struct A {
int x;
};

struct B
{
struct A;
int y;
};

由于匿名结构必须在它匿名的结构内部声明。

参见 this answer有关 C11 中匿名成员的更多详细信息。

关于c - 使用 ANSI C 的匿名结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34452082/

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