gpt4 book ai didi

c++ - C 代码中的 C4201 警告

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:03 24 4
gpt4 key购买 nike

此警告会在运行时产生任何问题吗?

ext.h(180):警告 C4201:使用了非标准扩展:无名结构/union

最佳答案

这是当你有一个没有名字的 union 或结构时,例如:

typedef struct
{
union
{
int a;
int b;
}; // no name
int c;
} MyStruct;

MyStruct m;
m.a = 4;
m.b = 6; //overwrites m.a
m.c = 8;

它允许您像访问结构成员一样访问 union 成员。当您为 union 命名(这是标准要求的)时,您必须改为通过 union 名称访问 ab:

typedef struct
{
union
{
int a;
int b;
} u;
int c;
}

MyStruct m;
m.u.a = 4;
m.u.b = 6; // overwrites m.u.a
m.c = 8;

只要您使用共享此扩展的编译器编译代码,这不是问题,只有当您使用的编译器编译代码时,这才是问题,因为标准不需要这种行为,编译器可以自由地拒绝这种代码。

编辑:正如 andyn 所指出的,C11 明确允许这种行为。

关于c++ - C 代码中的 C4201 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14473420/

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