我在名为h1.h
的头文件中声明了一个结构,该文件包含在两个源文件c1.c
和c2.c
中。
typedef struct
{
char binary_filename[256];
}programming;
我想创建此结构的两个变量device1
和device2
,然后声明两个指向这些变量的指针programmingPtr1
和programmingPtr2
。
我希望能够访问每个源文件中实例的成员binary_filename
。
我对应该在哪里声明这些变量和指针感到困惑。
我应该在标题中将变量声明为extern
吗?
我读了this post但它没有处理变量指针。
有人可以建议最好的方法吗?
答案 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之间的实际“连接”将由链接器完成。