簡體   English   中英

有人可以解釋這個 linux 設備驅動程序代碼塊中的 C 語法嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM