我有以下我感兴趣的源代码。
#include <stdio.h>
extern int foo;
int foo = 32;
int main()
{
printf("%d", foo);
}
这是一段完全正常的代码,当我编译它时
gcc -Wall -Wextra -pedantic foo.c
我没有收到任何警告。
这似乎很奇怪,因为变量在同一个文件中既定义为外部变量,又定义为全局变量。我很确定链接器很容易在同一个文件中找到外部变量的引用,但它看起来不像是编码错误吗?如果是这样,为什么编译器不对此发出警告?