gpt4 book ai didi

C 结构到结构赋值 - 目标结构中的值不正确

转载 作者:太空宇宙 更新时间:2023-11-04 05:46:11 26 4
gpt4 key购买 nike

我在头文件中有一个 c 结构:-

typedef struct sample
{
char *member1;
char **member2;
long *member3;
unsigned int member4;
} example;

我在同一个头文件中声明了一个默认的 typedef 变量:-

const example defaultValue;

defaultValue的定义在c文件中:-

const example defaultValue = 
{
NULL,
NULL,
NULL,
99
};

如果我这样做,现在在不同的 c 文件中,

example example1 = defaultValue;

所有成员都按预期分配了 NULL - 但“unsigned int member4”的分配值是 0 而不是 99。这很奇怪,因为 defaultValue.member4 是 99。有人可以解释一下这种不寻常的行为吗?有没有更好的方法来进行默认结构初始化?

最佳答案

您希望您的头文件像这样声明 defaultValue:

extern const example defaultValue;

这样您就不会遇到不止一个对象定义的问题。如果没有 extern 说明符,您将让每个翻译单元(包括 header )定义 defaultValue 的实例,这会导致未定义的行为。

您希望它们都引用您在问题中描述的 .c 文件中的文件,这就是 extern 说明符将为您做的。

关于C 结构到结构赋值 - 目标结构中的值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4776844/

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