2014-02-10 28 views
0

我必須修改ITU在工作時編寫的G722編解碼器的代碼。爲什麼要在定義函數的過程中聲明變量?

我喜歡包含真的時髦的函數定義這樣一條:

int 
    main (argc, argv) 
    int argc; 
    char *argv[]; 
    { 
    . 
    . 
    . 
    } 

爲什麼會有人用這樣的語法?

+5

過時的語法! – haccks

+1

這只是一個偏好,就是這樣。一些編碼學派想在第一次使用之前就把它們的聲明放在正確的位置。 –

+4

谷歌「舊C風格宣言」。如果你正在研究一些真正的舊代碼,那可能是一個編碼標準。絕對沒有更多。 –

回答

1

我找到了答案,用google搜索「Old C Style Declaration」,就像它在評論中提到的那樣。

答案是:

舊式函數聲明和定義使用略有不同的規則來聲明不是由ANSI C標準的推薦語法參數。首先,舊式聲明沒有參數列表。其次,在函數定義中,列出了參數,但它們的類型未在參數列表中聲明。類型聲明位於組成函數體的複合語句之前。舊式語法已過時,不應在新代碼中使用。但是仍然支持使用舊式語法的代碼。

這是來自:http://msdn.microsoft.com/en-us/library/efx873ys.aspx

0

這是很老(前1989年標準)函數定義的語法。爲了向後兼容,它仍然是合法的,但它絕對不再被推薦。

至於爲什麼有人會使用它,唯一合理的情況下,我能想到的是:

  • 這個代碼是非常老沒有人願意鋌而走險它只是爲了使其達到日期;
  • 它託管在一個平臺上,針對該版本的語言的更高版本的編譯器從未實現;
相關問題