[英]Can someone explain the C syntax in this block of linux device driver code?
具體來說, (*llseek) 術語是 object 鑄造嗎? 這個語法 < ( * < name > ) (...) > 是否有一個術語,我可以用谷歌搜索它以了解更多信息。
為什么“struct file *”沒有變量名,以及如何訪問它(假設我需要或允許訪問它)。 同樣,其余參數沒有變量名“loff_t, int”,這是為什么呢? 最后,__user(在這個例子中還是一般的 __)是一個宏嗎?
struct file_operations {
loff_t (*llseek) (struct file *, loff_t, int);
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
謝謝!
具體來說, (*llseek) 術語是 object 鑄造嗎?
(* )( ) declare name to be a pointer to a function returning type .表單 (* )( )
中的聲明將name聲明為指向 function 返回類型的指針。
這個語法 < ( * < name > ) (...) > 是否有一個術語,我可以用谷歌搜索它以了解更多信息。
不,它沒有特定的名稱,盡管它可以描述為 function 指針。 要了解這些內容,建議您閱讀 C 教科書,而不是嘗試針對個別主題。 或者,如果您有一些 C 經驗並成功完成了一些計算機科學理論課程,您可以閱讀 C 標准本身。 主要部分(討論基礎語言,沒有庫或可選部分)只有 130 頁,比許多教科書還少。
為什么“struct file *”沒有變量名,以及如何訪問它(假設我需要或允許訪問它)。
這是function中參數類型的聲明。 它說參數是一個指向struct file
的指針。 調用一個function,只需要知道它的參數是什么類型,這樣arguments就可以正確轉換並傳遞給它。 您不需要為這些參數命名。
同樣,其余參數沒有變量名“loff_t, int”,這是為什么呢?
和上面一樣。
最后,__user(在這個例子中還是一般的 __)是一個宏嗎?
它可能是一些用於為編譯器擴展提供文本的宏。 它可以為正在聲明的參數提供屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.