これは、古くて時代遅れの C 関数の書き方です。
C の祖先言語には型がなく、すべての変数に機械語が含まれていました。したがって、関数定義は次のように始まります。
main(u, _, a) {
/* ... some code ... */
}
以前の Cは、 C に関する独創的な本の著者 (Brian Kernighan と Dennis Ritchie) から「K&R C」として知られており、変数宣言のような形式で型を追加し、関数パラメーターのリストと関数のコード。
int main(u, _, a)
int u;
int _;
char *a;
{
/* ... some code ... */
}
K&R C では、型がint
の場合、多くの場所で省略できます。関数パラメーターの場合、型宣言行を完全に省略できます。
int main(u, _, a)
char *a;
{
/* ... some code ... */
}
ANSI Cは 1989 年に標準化され、その主な革新の 1 つは関数プロトタイプでした。適切な ANSI C では、使用前にすべての関数を宣言し、すべての引数の型を宣言します。
int main(int u, int _, char *a)
{
/* ... some code ... */
}
C コンパイラは、レガシー コードの古い形式を引き続きサポートします。(1989 年の C 標準に準拠している場合は、準拠する必要があります。) 20 年以上経過したレガシー コードはほとんど残っていないため、そのようなコードはほとんど見つかりません。
(これは の適切なタイプではないことに注意してmain
ください。Gcc はそれについて警告すると思いますが、警告設定を上げる必要があるかもしれません。)