前方宣言と関数プロトタイプ

void hoge();    // (1)
void hoge(void) // (2)

これは両方とも関数宣言であり,(1)が引数が不明な前方宣言,(2)がその内のプロトタイプ宣言.何でこんなこと書いたのかと言うと,俺がTAをやってる講義で使用されているテキストで,(1)がプロトタイプ宣言としてサンプルソースに出まくっていて,俺の担当している班の中では誰も疑問に思ってないということ.
Twitterで愚痴ったのとは違う方向で色々やばい気がする.


それと上の奴はC++だと型が厳格なのでvoidはいらないし,Dでもvoidは書かない(書くと逆に型エラーが出る).型が曖昧なC特有の問題かもしれない.