2012-10-31 40 views
1

爲什麼返回標準錯誤值的函數在錯誤宏名稱前有一個連字符( - )?例如,我追蹤引導加載程序的代碼,它是每個功能,例如:return -EINVAL爲什麼在錯誤名稱前添加連字符

+6

咦?你能舉一個例子嗎? –

+0

那麼我正在跟蹤引導程序的代碼,它是每個函數,例如:'返回-EINVAL' –

回答

4

我猜這是關於Linux內核中的函數,這是我見過這種模式的地方。

發生這種情況的函數需要返回一個負值int來表示失敗,並且要使用宏,但宏的值是正值。

因此,希望由於例如信號而發信號失敗的代碼。 EINVAL會做

return -EINVAL; 

所以連字符是一個簡單的前綴否定算子,即輪流從宏觀進入負面的東西正值。

我想周圍的代碼(系統調用機制)可以檢測到這一點,並將實際錯誤複製到errno,同時返回-1到用戶的電話或其他東西。我沒有驗證過這一點,但它作爲一種簡單的方法來隔離錯誤代碼的處理/傳播與其生成是有意義的。

+0

這就是我猜測 –

相關問題