【问题标题】:Linking extern variables in C在 C 中链接外部变量
【发布时间】:2009-05-17 22:32:09
【问题描述】:

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

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

MyLib.h 我有一个声明(extern int Variable;)。当我尝试在main.c 中使用Variable 时,我不能。当然,我在MyLib.cmain.c 中包含了MyLib.h,并且我也链接了它们。无论如何,main.c 中无法识别该变量。

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

【问题讨论】:

  • 请贴出出处和错误。特别是,当您甚至无法构建 main.c 时,您是如何设法链接的?
  • 我在那边有一个 main.c,我只是想了解编译器和链接器是如何工作的。但克里斯·卢茨的回答奏效了。谢谢。

标签: c extern


【解决方案1】:

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

发生的情况是,对于MyLib.cmain.c,编译器被告知@​​987654327@ 存在并且是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;
}

【讨论】:

  • 谢谢,我刚刚明白了。
  • 没问题。编译的众多阶段一开始可能会让人很困惑。
猜你喜欢
  • 2016-12-20
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多