[英]Using “extern” command in c for sharing a variable [duplicate]
这个问题已经在这里有了答案:
我有以下代码:
(1)extern_test.h:
extern int give_something;
(2)extern_test.c:
#include <stdio.h>
#include "extern_test.h"
int give_something = 10;
(3)extern_test2.c:
#include <stdio.h>
#include "extern_test.h"
int main()
{
printf("%i\n", give_something);
return 0;
}
现在,当我在终端上编译extern_test2.c时,它说“对'give_something'的未定义引用” ..请帮助为什么这不起作用。
“未定义的引用”意味着代码写得很好,但是一旦所有不同的文件都编译好了,是时候将它们链接在一起了,那么其中一个文件就没有您想要的东西(在这种情况下, give_something
)。 这称为链接器错误。
问题很可能是您没有为编译器使用正确的命令行-您试图将extern_test.c
和extern_test2.c
编译为两个单独的二进制文件。 因此,当您编译extern_test.c
它工作正常,但是当您尝试编译extern_test2.c
它找不到变量,因为它是在extern_test.c
中声明的。
假设您使用的是g ++,请使用以下命令行:
g++ extern_test.c extern_test2.c
注意它们是如何一起编译的。 有一些更高级的命令可以让您将每个命令分别编译到一个目标文件中 ,然后再使用第三个命令将它们链接在一起,但这在这里不是必需的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.