2017-07-27 84 views
1

我有一个头文件中称为h1.h,包含在两个源文件c1.cc2.c中声明的结构。使一个全局结构指针可用于多个源文件

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

我想创建这个结构的两个变量,device1device2然后声明两个指针,以每个变量,programmingPtr1programmingPtr2的。

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

我很困惑,我应该在哪里声明这些变量和指针。

我应该在头文件中声明变量为extern吗?我写this post但它不处理指向变量的指针。

请问有人建议最好的方法?

+0

你可以在'C'文件中定义一个变量,并在另一个文件中声明它为'extern'(或者根据你的设计在头文件中) –

回答

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; 
+0

谢谢我试过了,我得到了一个'undefined在源文件中引用'programmingPtr1''?有任何想法吗? –

+0

@articsol您需要将两个文件链接在一起。使用FCC将是'gcc -o program file1.c file2.c' – dbush

0

没有创建任何实例 - 他们只是两个独立的结构全球范围。指针也是一样。您只需通知编译器该对象是使用关键字extern在其他地方定义的。当然你也需要有你的typedef。

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

相关问题