【发布时间】:2013-02-03 11:47:48
【问题描述】:
好的,几个小时以来,我已经阅读了很多关于 extern 关键字含义的内容。还有最后一件事困扰着我,我找不到任何信息。
据我了解,extern 关键字基本上告诉编译器变量或函数只是一个声明,它是在某个地方定义的,所以它不必担心,链接器会处理它。
并且在键入以下内容时编译器生成的警告(我使用的是 gcc 4.2.1):
extern int var = 10;
支持这一点。对于extern,这应该只是一个声明,所以它是不正确的。
但是,让我感到困惑的是在输入以下内容时没有警告或任何内容:
extern int func() {return 5;}
这是一个定义,它应该生成相同的警告,但它不会。我能在这里找到的唯一解释是定义覆盖了extern 关键字。但是,遵循该逻辑,为什么当它是变量定义时它不覆盖它?或者关键字与变量一起使用时是否有特殊含义?
如果有人向我解释这一点,我将不胜感激。谢谢!
【问题讨论】:
-
最后一个分号困扰着我。
-
看看this link是否有帮助。
-
问题应该是变量的初始化问题
-
虽然这个问题名义上是重复的,但建议的原件接受的答案质量很低。它过于冗长、不清楚、不完全准确,并且提供了不相关的误导性建议。
标签: c