gpt4 book ai didi

c - 如何在 C 中使用 union 初始化 const 结构

转载 作者:太空宇宙 更新时间:2023-11-04 04:38:16 24 4
gpt4 key购买 nike

几个小时以来,我一直在努力解决这个问题。虽然我发现了一些类似的问题,但它是行不通的。我在一个结构中有一个 union 。现在我想初始化这个结构的一个常量变量。

struct length
{
int minutes;
int seconds;
};

typedef struct article
{
char name[MAXLENGTH_A]
double price;
char type;
union size
{
int pages;
struct length blength;
} bsize
} art;

现在我想初始化这个结构的常量变量。我在某处读到以下内容应该有效,但事实并非如此。我总是得到错误:C2224:“.pages”左侧的操作数不是类、结构或 union ,并且C2078:对许多初始化器

const art book = {"Title", 24.99, NORMAL, { .pages = 50}};

我知道这个例子可以更容易地解决。但我真正的问题是,初始化 union 的第二个元素,像这样:

const art book = {"Title", 24.99, AUDIO, { .blength.seconds = 40}};

第一个和第二个初始化都不起作用。有人能告诉我怎么做对吗?顺便说一句,我正在使用 C99。

最佳答案

{ .pages = 50} 构造是一个指定初始化程序,MS C 编译器不支持的 C99 功能(有人告诉我,这是一个 C89 编译器).这也限制了您仅通过 union 的第一个成员来初始化 union 的能力。

我可以通过以下方式解决此限制:使用 { 50 } 初始化 页面。然后忘记 const 并显式初始化 .blength.secondsconst 声明对象的效果,嗯,被高估了:-)

关于c - 如何在 C 中使用 union 初始化 const 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29066447/

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