【发布时间】:2018-04-01 19:16:23
【问题描述】:
如何从 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之外的其他文件中有这个类型的定义,去外面搜索它。
所有这些功能都像“解释”吗?
【问题讨论】:
-
这是正确的。 “去外面搜索它” - >错误。编译器不会搜索它。链接器会。
-
是的,有道理,感谢指正
标签: c struct declaration extern definition