试图理解外部关键字
Trying to understand the extern keyword
我正在尝试了解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
说某物是在别处定义的。您不会在其他地方(在此程序中)定义它。链接者正确地抱怨了这一点。
相关文章:
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- C++中的"inline"关键字
- 如何确保C++函数在定义之前声明(如override关键字)
- 在函数内部的声明中初始化数组,并在外部使用它
- 使外部项目可用于find_package CMake
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- C++:来自外部文件的Trivia
- 从函数角度看ID到文件路径的内部与外部映射
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 在 typedef 内部使用 const 关键字和在 typedef 外部使用 const 关键字之间有区别吗?
- 具有多个定义时,对于外部关键字没有错误
- 用关键字声明外部本地变量
- static关键字在类内部和类外部
- 在 VC++ 中访问一个文件中声明的变量.(外部关键字用法)
- 试图理解外部关键字
- C++程序使用 C 库标头将"this"识别为关键字。外部"C"错误?
- 外部关键字用法
- C/C++ 更罕见的关键字 - 寄存器、易失性、外部、显式
- typedef 或在我的命名空间中公开外部库类时使用的 using 关键字