私は興味のある次のソースコードを持っています。
#include <stdio.h>
extern int foo;
int foo = 32;
int main()
{
printf("%d", foo);
}
これは完全に正常なコードであり、
gcc -Wall -Wextra -pedantic foo.c
警告はありません。
また、変数は同じファイル内で外部としてもグローバルとしても定義されているため、奇妙に思えます。リンカが同じファイル内の外部変数の参照を見つけるのは簡単だと確信していますが、コーディングエラーのようには見えませんか?もしそうなら、なぜコンパイラはこれについて警告しないのですか?