【发布时间】:2016-10-26 01:36:46
【问题描述】:
来自https://www.quora.com/What-are-the-types-of-linkages-in-C-programming
外部链接,意味着可以在某处定义变量 else 在您正在处理的文件之外,这意味着您可以定义 它在任何其他翻译单元中,而不是您当前的翻译单元中(you 在另一个中定义时必须使用关键字 extern 源代码)。
内部链接,意味着变量必须在你的 翻译单元范围,这意味着它应该在任何 包含的库,或在同一文件范围内。
无链接,指向默认函数和大括号范围,例如 在函数内部定义一个自动变量,这将使 变量只能在该函数的范围内访问。
注意:
默认情况下,任何全局对象都是外部链接的,您可以使用关键字 static 禁用它。
默认情况下,任何常量全局对象都是内部链接的,你可以 使用关键字 extern 禁用它。
假设在file1中定义了一个全局变量,我想在file2中使用它。
-
在file1中,全局变量是否用关键字定义
extern?上面的引用似乎自相矛盾:
“在其他源代码中定义时必须使用关键字 extern”似乎应该这样说。
“任何全局对象默认都是外部链接的”好像是说不需要。
在file2中,我应该用关键字
extern声明全局变量吗?
【问题讨论】:
-
我认为这两种情况都不是强制性的。第一句话可能恰好是错误的。让我检查一下标准
-
一个是外联,一个是外联。我认为有不同。
-
定义变量的地方需要使用
extern的说法不正确。您只需要在文件中使用extern来引用在别处定义的变量。 -
@AndySchweig 我不同意。如果使用内部链接定义变量,则需要在定义变量的同一单元中使用
extern。 -
@DmitriChubarov 您的评论毫无意义;不能使用内部链接定义变量并且具有
extern
标签: c language-lawyer