15

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

  • MyLib.c并且MyLib.h是图书馆。
  • main.c是程序。

MyLib.h我有一个声明(extern int Variable;)。当我尝试使用Variable时,main.c我不能。当然,我已经包含MyLib.hinMyLib.c和 in main.c,并且我也将它们链接起来。无论如何,该变量在main.c.

链接程序时如何获取可用的变量?

4

1 回答 1

31

Variable必须在某处定义。我会将其声明为 in 中的全局变量MyLib.c,然后仅将其声明为externin main.c

正在发生的事情是,对于MyLib.cmain.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;
}
于 2009-05-17T22:36:28.610 回答