K&R 说:
默认情况下,外部变量和函数具有以下属性:所有以相同名称对它们的引用,即使是单独编译的函数,也是对同一事物的引用
请解释一下这是什么意思,我不明白
考虑两个函数:
extern int extern_sqr(int i) { return i * i; }
static int static_dbl(int i) { return i * 2; }
那么参考的人extern_sqr
将引用该函数。这是反对static
链接,只有来自“翻译单元”(大致是其定义的文件)内的人员才能访问该功能static_dbl
.
事实证明,extern
在c中默认隐含。因此,如果您编写以下内容,您会得到相同的行为:
int extern_sqr(int i) { return i * i; }
较新的 C 标准仍然需要“函数声明”,因此,通常在头文件中的某个位置,您会遇到:
int extern_sqr(int i); // Note: 'i' is optional
其中说“在其他翻译单元的某个地方,我有一个名为extern_sqr
.
同样的逻辑也适用于变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)