在 Unix 中,我有三个主要文件。其中一个是库,另一个是程序。
MyLib.c并且MyLib.h是图书馆。main.c是程序。
在MyLib.h我有一个声明(extern int Variable;)。当我尝试使用Variable时,main.c我不能。当然,我已经包含MyLib.hinMyLib.c和 in main.c,并且我也将它们链接起来。无论如何,该变量在main.c.
链接程序时如何获取可用的变量?
Variable必须在某处定义。我会将其声明为 in 中的全局变量MyLib.c,然后仅将其声明为externin 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;
}