在C中链接外部变量

时间:2009-05-17 22:32:09

标签: c extern

在Unix中,我有三个主要文件。其中一个是图书馆,另一个是程序。

  • MyLib.cMyLib.h是图书馆。
  • main.c是该计划。

MyLib.h我有一个声明(extern int Variable;)。当我尝试在Variable中使用main.c时我不能。我当然在MyLib.hMyLib.c中添加了main.c,我也将它们链接起来。无论如何,main.c中都无法识别变量。

如何在链接程序时获取变量?

1 个答案:

答案 0 :(得分:30)

必须在某处定义

Variable。我会在MyLib.c中将其声明为全局变量,然后仅在extern中将其声明为main.c

正在发生的事情是,对于MyLib.cmain.c,编译器被告知Variable存在并且是int,但它在其他地方( extern)。哪个好,但是它必须实际上在其他地方,当你的链接器试图将所有文件链接在一起时,它找不到Variable实际上在任何地方,所以它告诉你它不存在

试试这个:

MyLib.c:

int Variable;

MyLib.h:

extern int Variable;

main.c中:

#include "MyLib.h"

int main(void)
{
    Variable = 10;
    printf("%d\n", Variable);
    return 0;
}