gpt4 book ai didi

c - 从另一个 .c 文件访问相同的结构实例

转载 作者:行者123 更新时间:2023-12-01 13:23:01 26 4
gpt4 key购买 nike

如何从 second.c 文件访问 first.c 中定义的同一个结构实例

什么方式最合适?

我们把这样的东西放在 first.h 文件中:

typedef struct
{
int a;
double b;
} myStruct;

上面的代码表示新类型 myStruct 的定义,同时也是一个声明,因为它表示编译器在某处存在这样的结构?

first.c文件中我们应该添加:

myStruct tmpStructure;//这里我们创建了myStruct类型的实例,并为其分配了内存空间,这叫做定义?

second.c 中,如果我们想使用这个 myStruct 类型的同一个实例,我们应该放:

extern myStruct tmpStruct;//这会说我们的编译器在这个 second.c 之外的其他文件中有这个类型的定义,去外面搜索它.

所有这些功能是否像“解释”一样?

最佳答案

你猜的完全正确。您没有提到的一种常见方法是,您还可以在头文件中放入以下内容:

extern myStruct tmpStruct;

它不会损害您定义变量的文件,并通知编译器(声明)程序中其他地方定义的此类外部变量。因此,如果您的头文件最终显示为:

typedef struct
{
int a;
double b;
} myStruct;

extern myStruct tmpStruct;

您可以在两个文件中使用 tmpStruct 而无需任何进一步声明(当然您需要仍然在 first.c 中进行实际定义. 此外,如果您更改 tmpStruct 的类型,您将进行额外的安全检查,因为如果您在定义文件中更改它而不是在 header 中更改它,反之亦然。

关于c - 从另一个 .c 文件访问相同的结构实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49601750/

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