□ 関数定義で戻り値の型名を省略すると void でなくint

C言語は、過去の言語仕様との互換性のため、変数宣言や関数宣言で省略できるところで型を省略するとint型になる、というルールがあります。変数宣言だけでなく関数宣言も、なんです。このため関数宣言で

fnc1()
{
  printf("hello,world\n");
}

のような記述が合った場合、

int fnc1(...)
{
  printf("hello,world\n");
}

と同じことになります。決して void fnc() と同じわけでないので、この場合、関数が値を返さなきゃいけないのにreturnがないというような警告メッセージがだされるでしょう。