我开始质疑"extern"关键字的用处,该关键字用于访问其他模块中的变量/函数(在其他文件中).当我们使用#include预处理器导入带有变量/函数原型或函数/变量定义的头文件时,我们不是在做同样的事吗?
Mic*_*ael 20
extern 是必需的,因为它声明符号存在且属于某种类型,并且不为其分配存储空间.
如果你这样做:
int foo;
Run Code Online (Sandbox Code Playgroud)
在多个源文件之间共享的头文件中,您将收到链接器错误,因为每个源都会创建自己的foo副本,并且链接器将无法解析该符号.
相反,如果你有:
extern int foo;
Run Code Online (Sandbox Code Playgroud)
在标题中,它将声明一个在每个源文件中的其他位置定义的符号.
一个(也是唯一一个)源文件将包含
int foo;
Run Code Online (Sandbox Code Playgroud)
它为链接器创建了一个foo实例来解析.
| 归档时间: |
|
| 查看次数: |
4582 次 |
| 最近记录: |