我开始质疑“extern”关键字的有用性,该关键字用于访问其他模块(其他文件中)中的变量/函数。当我们使用 #include 预处理器导入带有变量/函数原型或函数/变量定义的头文件时,我们不是在做同样的事情吗?
extern
之所以需要,是因为它声明该符号存在并且属于某种类型,并且不为其分配存储空间。
如果你这样做:
int foo;
在多个源文件之间共享的头文件中,您将收到链接器错误,因为每个源都会创建自己的 foo 副本,并且链接器将无法解析该符号。
相反,如果您有:
extern int foo;
在标头中,它将声明在每个源文件中的其他位置定义的符号。
一个(且仅有一个)源文件将包含
int foo;
它创建 foo 的单个实例供链接器解析。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)