2015-04-20 78 views
1

是如何工作的,給定函數頭,指定初始化之後函數名

ssize_t memory_read(struct file *filp, char *buf, size_t count, loff_t *f_pos); 

在使用指定的標識符的結構,在這種情況下,讀後跟函數名,我明白這是與.read = memory_read相同。但是我不確定它的目的。這是否提供了一個方法調用代碼中其他地方的memory_read函數?

struct file_operations memory_fops = { 
    read: memory_read, 
    write: memory_write, 
    open: memory_open, 
    release: memory_release 
}; 
+1

https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html – user3125367

+0

是的,我看到了,但我沒有看到有關使用函數的任何信息。變量是。 –

+0

我誤讀了這個問題,無法刪除坐在電話上。對不起,噪音。 – user3125367

回答

2

是的,這個結構包含一組函數指針,它們將在程序的其他地方使用。尋找類似的東西:

memory_fops.read(......) 

依此類推。

+0

謝謝,那是我雖然但不確定。 –

0

版本「名稱:值」不應再使用。這是一個gcc擴展,它已經與使用「.name = value」形式的C99過時了。如果這是Linux驅動程序的一個片段,但是,如果風格指南要求它,則可以堅持使用它。否則,我會將其更改爲符合標準的版本。