在 Unix 中,我有三个主要文件。其中一个是库,另一个是程序。
MyLib.c
并且MyLib.h
是图书馆。main.c
是程序。
在MyLib.h
我有一个声明(extern int Variable;
)。当我尝试使用Variable
时,main.c
我不能。当然,我已经包含MyLib.h
inMyLib.c
和 in main.c
,并且我也将它们链接起来。无论如何,该变量在main.c
.
链接程序时如何获取可用的变量?
Variable
必须在某处定义。我会将其声明为 in 中的全局变量MyLib.c
,然后仅将其声明为extern
in main.c
。
正在发生的事情是,对于MyLib.c
和main.c
,编译器被告知Variable
存在并且是一个int
,但它在其他地方(extern
)。这很好,但是它实际上必须在其他地方,并且当您的链接器尝试将所有文件链接在一起时,它实际上找不到Variable
任何地方,所以它告诉您它不存在。
试试这个:
MyLib.c:
int Variable;
MyLib.h:
extern int Variable;
主.c:
#include "MyLib.h"
int main(void)
{
Variable = 10;
printf("%d\n", Variable);
return 0;
}