试图了解extern关键字

时间:2014-12-02 04:25:38

标签: c++ extern

我正在尝试了解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文件夹中。

有什么问题?

2 个答案:

答案 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说某事在别处定义。你不能在其他地方(在这个程序中)定义它。联系人正确地抱怨这一点。