我必須修改ITU在工作時編寫的G722編解碼器的代碼。爲什麼要在定義函數的過程中聲明變量?
我喜歡包含真的時髦的函數定義這樣一條:
int
main (argc, argv)
int argc;
char *argv[];
{
.
.
.
}
爲什麼會有人用這樣的語法?
我必須修改ITU在工作時編寫的G722編解碼器的代碼。爲什麼要在定義函數的過程中聲明變量?
我喜歡包含真的時髦的函數定義這樣一條:
int
main (argc, argv)
int argc;
char *argv[];
{
.
.
.
}
爲什麼會有人用這樣的語法?
我找到了答案,用google搜索「Old C Style Declaration」,就像它在評論中提到的那樣。
答案是:
舊式函數聲明和定義使用略有不同的規則來聲明不是由ANSI C標準的推薦語法參數。首先,舊式聲明沒有參數列表。其次,在函數定義中,列出了參數,但它們的類型未在參數列表中聲明。類型聲明位於組成函數體的複合語句之前。舊式語法已過時,不應在新代碼中使用。但是仍然支持使用舊式語法的代碼。
這是很老(前1989年標準)函數定義的語法。爲了向後兼容,它仍然是合法的,但它絕對不再被推薦。
至於爲什麼有人會使用它,唯一合理的情況下,我能想到的是:
過時的語法! – haccks
這只是一個偏好,就是這樣。一些編碼學派想在第一次使用之前就把它們的聲明放在正確的位置。 –
谷歌「舊C風格宣言」。如果你正在研究一些真正的舊代碼,那可能是一個編碼標準。絕對沒有更多。 –