這是編寫C函數的一個老的,過時的方式(在形式name=value
字符串)。
在C的祖先的語言,沒有類型:所有變量包含在機器字。因此,在函數定義應該像這樣開頭:
main(u, _, a) {
/* ... some code ... */
}
C as it used to be,被稱爲「K & RC」從seminal book about C(布賴恩Kernighan和丹尼斯·裏奇)加入,看起來像變量聲明表單類型的作家,和介於函數參數列表和函數代碼之間。
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年,其主要創新之一是函數原型。在適當的ANSI C中,在使用之前聲明所有函數,並聲明所有參數的類型。
int main(int u, int _, char *a)
{
/* ... some code ... */
}
C編譯器仍然支持傳統代碼的舊錶單。 (如果他們符合1989 C標準,他們必須)。20多年後遺留的代碼並不多,所以你不會經常找到這樣的代碼。
(請注意,這不是main
正確的類型。我覺得GCC將警告你,但你可能要打開警告設置的。)
看起來像一個預C89風格的函數。 – chux
要添加一個不值得回答的有趣事實:在編寫16位可引導程序時,我不得不使用這種類型的函數聲明。 gcc不能編譯爲16位,所以我必須使用不支持ANSI的bcc(Bruce's C編譯器)。所以你可能會在一些領域碰到這種東西! – Guido