使全局结构指针可用于多个源文件

时间:2017-07-27 14:11:17

标签: c pointers struct scope extern

我在名为h1.h的头文件中声明了一个结构,该文件包含在两个源文件c1.cc2.c中。

typedef struct
{
    char binary_filename[256];
}programming;

我想创建此结构的两个变量device1device2,然后声明两个指向这些变量的指针programmingPtr1programmingPtr2

我希望能够访问每个源文件中实例的成员binary_filename

我对应该在哪里声明这些变量和指针感到困惑。

我应该在标题中将变量声明为extern吗?

我读了this post但它没有处理变量指针。

有人可以建议最好的方法吗?

2 个答案:

答案 0 :(得分:1)

要在多个源文件中使用变量,您需要在所有相关来源包含的头文件中声明,然后您定义一个源文件。

所以你的标题会有:

extern programming device1;
extern programming device2;
extern programming *programmingPtr1;
extern programming *programmingPtr2;

然后在一个源文件中,您将拥有:

programming device1 = { "filename1" };
programming device2 = { "filename2" };
programming *programmingPtr1 = &device1;
programming *programmingPtr2 = &device2;

答案 1 :(得分:0)

您没有创建任何实例 - 它们只是全局范围内的两个独立结构。与指针相同。您只需要使用关键字shell通知编译器该对象已在其他位置定义。当然你也需要你的typedef。

定义的extern对象和物理objext之间的实际“连接”将由链接器完成。

相关问题