C中的外部联系

时间:2010-06-22 13:33:09

标签: c

K& R说:

  

默认情况下,外部变量和函数具有以下属性:所有对它们的引用都是相同的,即使是单独编译的函数,也是对同一事物的引用

请解释这意味着什么,我不明白

2 个答案:

答案 0 :(得分:5)

考虑两个功能:

extern int extern_sqr(int i) { return i * i; }
static int static_dbl(int i) { return i * 2; }

然后,引用extern_sqr的人将引用该功能。这与static链接相反,只有来自“翻译单元”(大致是其定义的文件)内的人才能访问函数static_dbl

事实证明,c中默认隐含extern。所以,如果你写了:

,你会得到同样的行为
int extern_sqr(int i) { return i * i; }

较新的C标准仍然需要“函数声明”,因此,通常在某个地方的头文件中,您会遇到:

int extern_sqr(int i);  // Note: 'i' is optional

其中说“在某个地方,在其他一些翻译单元中,我有一个名为extern_sqr的函数。

同样的逻辑适用于变量。

答案 1 :(得分:0)

外部变量和函数是全局的,即即使从程序中的不同* .c文件调用时,也保持相同的值(对于变量)或定义(对于函数)。