我正在尝试了解extern关键字。
我创建了这个文件try2.cpp
#include <stdio.h>
#include <conio.h>
extern int a;
int main()
{
a = 5;
printf("%d", a);
getch();
return 0;
}
这一个try1.cpp
int a;
int main()
{
a = 10;
return 0;
}
但我在try2.c中收到错误,a未定义。 这两个文件都在TurboC的BIN文件夹中。
有什么问题?
答案 0 :(得分:1)
在try2.cpp
,您有:
extern int a;
这告诉编译器a
是在外部定义的 - 即不在try2.cpp
内。因此,您必须在外部实际定义它,并且为此需要第二个.cpp文件 - 假设您创建一个包含以下内容的a.cpp
文件:
int a;
然后你可以编译try2.cpp和a.cpp中的每一个:
tc -c try2.cpp
tc -c a.cpp
然后你需要链接它们,同时指定你的CS.lib标准库文件的路径(如果下面的代码不起作用,用Windows资源管理器搜索它 - 更新下面的\TC\LIB\
路径):
tlink try2.obj + a.obj, program.exe, , \TC\LIB\CS.lib
那应该为你创建一个新的program.exe
....
你应该得到一个更好的编译器....
答案 1 :(得分:0)
extern
说某事在别处定义。你不能在其他地方(在这个程序中)定义它。联系人正确地抱怨这一点。