在 c 中使用 "extern" 命令共享变量
Using "extern" command in c for sharing a variable
我有以下代码:
(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 时,它显示 "undefined reference to 'give_something'"...请帮助解释为什么这不起作用..
"Undefined Reference" 意味着代码 编写 很好,但是一旦编译了所有不同的文件并且是时候将它们 link 在一起,一个的文件没有您要查找的内容(在本例中为 give_something
)。这称为 linker 错误。
问题很可能是您没有使用正确的编译器命令行 - 您正试图将 extern_test.c
和 extern_test2.c
编译成两个单独的二进制文件。因此,当您编译 extern_test.c
时它工作正常,但是当您尝试编译 extern_test2.c
时它找不到变量,因为它是在 extern_test.c
.
中声明的
假设您使用的是 g++,请使用此命令行:
g++ extern_test.c extern_test2.c
注意它们是如何一起编译的。有一些更高级的命令可以让你将每一个单独编译成一个 目标文件 ,然后 link 然后将它们全部编译成第三个命令,但这里没有必要。
我有以下代码:
(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 时,它显示 "undefined reference to 'give_something'"...请帮助解释为什么这不起作用..
"Undefined Reference" 意味着代码 编写 很好,但是一旦编译了所有不同的文件并且是时候将它们 link 在一起,一个的文件没有您要查找的内容(在本例中为 give_something
)。这称为 linker 错误。
问题很可能是您没有使用正确的编译器命令行 - 您正试图将 extern_test.c
和 extern_test2.c
编译成两个单独的二进制文件。因此,当您编译 extern_test.c
时它工作正常,但是当您尝试编译 extern_test2.c
时它找不到变量,因为它是在 extern_test.c
.
假设您使用的是 g++,请使用此命令行:
g++ extern_test.c extern_test2.c
注意它们是如何一起编译的。有一些更高级的命令可以让你将每一个单独编译成一个 目标文件 ,然后 link 然后将它们全部编译成第三个命令,但这里没有必要。