gpt4 book ai didi

c - 在C中的多个源文件中包含头文件

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

考虑以下示例:标题.h:

typedef struct
{
int value;
}My_Struct;

void edit(int num);
int get();

标题.c

My_Struct data={0};

void edit(int num)
{
data.value = num;
}
int get()
{
Return data.value;
}

如果两个文件 file1.c 和 file2.c 都包含 header.h 并且 file1.c 调用 edit 函数将值更改为 99,从 file2.c 调用的 get 函数会返回 99 还是初始化的 0?

我希望它会返回 0,并且每个文件都有自己的 My_Struct 副本。

最佳答案

假设 file1.c 和 file2.c 与 header.c 一起链接到一个可执行文件中,它们将引用相同的变量。因此,如果您从 file1.c 中的函数调用 edit 并使用值 99,则随后从 file2.c 中的函数调用 get 将返回 99。

获得不同结果的唯一方法是将 My_Struct 的实例传递给这些函数,这样每个调用函数都可以使用不同的实例。

另一方面,如果 file1.c 和 file2.c 分别链接到单独的可执行文件中,那么每个文件(实际上是每个正在运行的实例)都将拥有自己的 data 副本。

关于c - 在C中的多个源文件中包含头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39875762/

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