可能重复:
Effects of the `extern` keyword on C functions混乱关于与函数定义的extern用C
好了,现在几个小时我已经读了很多关于extern关键字是什么意思。还有最后一件事情让我无法找到任何有关的信息。 据我所知extern
关键字基本上告诉编译器,变量或函数只是一个声明,并且它是在某个地方定义的,所以它不必担心,链接器会处理它。
而且打字时由编译器(我用gcc 4.2.1)所产生的警告:
extern int var = 10;
支持这一点。用extern
这应该只是一个声明,所以它是不正确的。
然而,这是混淆了我的事情是打字时没有警告或任何东西:
extern int func() {return 5;}
这是一个定义,它应该产生同样的警告,但事实并非如此。对此的唯一解释是在此处找到的是该定义覆盖了extern
关键字。但是,遵循这个逻辑,为什么它在变量定义时不会覆盖它?或者,当与变量一起使用时,关键字是否有特殊含义?
如果有人向我解释这一点,我将不胜感激。谢谢!
最后一个分号正在扰乱我。 –
看看[这个链接]是否有帮助(http://stackoverflow.com/questions/856636/effects-of-the-extern-keyword-on-c-functions)有帮助。 –
问题必须是变量的初始化 – nabroyan