我有以下我感兴趣的源代码。
#include <stdio.h>
extern int foo;
int foo = 32;
int main()
{
printf("%d", foo);
}
这是一段完全正常的代码,当我用
gcc -Wall -Wextra -pedantic foo.c
我没有收到任何警告。
这看起来很奇怪,因为变量在同一文件中既被定义为外部变量,又被定义为全局变量。
我很确定链接器很容易在同一文件中找到外部变量的引用,但是它看起来不像编码错误吗?如果是这样,为什么编译器不对此发出警告?
没有什么奇怪的。您首先声明了一个变量(您向编译器保证它存在),然后实际定义了它。这没有问题。
另外,默认情况下,所有非函数本地变量且未定义为static
are extern
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)