可能重复:
`extern` 关键字对 C 函数的影响
好的,所以几个小时以来,我已经阅读了很多关于 extern 关键字含义的内容。还有最后一件事让我无法找到任何信息。据我了解,extern
关键字基本上告诉编译器变量或函数只是一个声明,并且它是在某个地方定义的,所以它不必担心,链接器会处理它。
并且在键入以下内容时编译器生成的警告(我使用的是 gcc 4.2.1):
extern int var = 10;
支持这一点。这extern
应该只是一个声明,所以它是不正确的。
但是,让我感到困惑的是在输入以下内容时没有警告或任何内容:
extern int func() {return 5;}
这是一个定义,它应该生成相同的警告,但它不会。我能在这里找到的唯一解释是定义覆盖了extern
关键字。但是,遵循该逻辑,为什么当它是变量定义时它不覆盖它?或者关键字与变量一起使用时是否具有特殊含义?
如果有人向我解释这一点,我将不胜感激。谢谢!