>>179
ファイル"a.c"
-----------------------
int a;
int b(void);

int main(void)
{
 a = 0;
 return b();
}

ファイル"b.c"
-----------------------
int a;
int b(void)
{
 return a;
}
-----------------------

規格では、この2つのファイルをコンパイルしてリンクできると思うけど、
これがリンクエラーになる処理系もあるの?
あと、空の定義って、仮定義(tentative definition)のこと?

The following statements show normal definitions and tentative definitions.

int i4;       /* tentative definition, external linkage */
int i4;       /* valid tentative definition */

えーと、煽りじゃないです。
昔の処理系だとエラーなんでしょうか…