2014-06-27 34 views
1

閱讀glibc變量聲明,我看到這一段代碼在string/strerror.c下一個參數列表

char * 
strerror (errnum) 
    int errnum; 
{ 
    char *ret = __strerror_r (errnum, NULL, 0); 
    int saved_errno; 

    if (__glibc_likely (ret != NULL)) 
    return ret; 
    saved_errno = errno; 
    if (buf == NULL) 
    buf = malloc (1024); 
    __set_errno (saved_errno); 
    if (buf == NULL) 
    return _("Unknown error"); 
    return __strerror_r (errnum, buf, 1024); 
} 

注意如何有一個int errnum以下參數列表。這是如何有效的語法?它在做什麼?

回答

1

這是舊式的做事方式,K & R,pre-ANSI。

一旦函數原型被引入,這種做事方式已經過時了。

不是實際上已過時,因爲即使在C11中它仍然有效(根據6.9.1 Function definitions /13),但很少有人再使用它)。

它指定參數的類型的功能塊,類似於:

char *strerror (int errnum) 
+0

在K&R的所有參數均在聲明整數'字符串錯誤(差錯編號)',然後鍵入下一行定義爲I明白它。 –

相關問題