试图理解外部关键字

Trying to understand the extern keyword

本文关键字:外部 关键字      更新时间:2023-10-16

我正在尝试了解extern关键字。

我创建了这个文件 try2.cpp

#include <stdio.h>
#include <conio.h>
extern int a;
int main()
{
    a = 5;
    printf("%d", a);
    getch();
    return 0;
}

而这个尝试1.cpp

int a;
int main()
{
    a = 10;
    return 0;
}

但是我在try2.c中收到一个错误,即a未定义。这两个文件都在 TurboC 的 BIN 文件夹中。

问题出在哪里?

在你的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资源管理器搜索它 - 更新下面的TCLIB路径):

tlink try2.obj + a.obj, program.exe, , TCLIBCS.lib

这应该创建一个新的program.exe供您运行。

不过,您应该获得更好的编译器....

extern说某物是在别处定义的。您不会在其他地方(在此程序中)定义它。链接者正确地抱怨了这一点。