[英]Need help understanding what this C code does
我需要幫助理解以下代碼是什么。
1 const char* (*srslte_rf_devname)(void* h);
2 int (*srslte_rf_start_rx_stream)(void* h, bool now);
3 int (*srslte_rf_stop_rx_stream)(void* h);
4 void (*srslte_rf_flush_buffer)(void* h);
我認為在第 1 行發生的是 const char* 是一個指針,它是一個常量字符數組,它指向一個名為 srslte_rf_devname 的指針函數,我不知道 (void* h) 是什么或它在做什么.
我認為第 2 行聲明了一個名為 srslte_rf_start_rx_stream 且類型為 int 的指針函數。 我不知道 (void* h, bool now); 是或正在做什么。
我認為第 4 行聲明了一個沒有返回值“void”的指針函數,不確定該函數與其他行相比的“類型”。
請幫助我理解 * 是什么意思 (*"some_stuff") 是什么意思或指向我解釋它的資源。
const char* (*srslte_rf_devname)(void *h);
請注意,在C語法, const char
是聲明,說明符的一部分,並且*
是說明符的一部分。 因此,要從語法上理解這一點,我們應該將*
與聲明符的其余部分組合在一起,而不是與說明符組合在一起: const char *(*srslte_rf_devname)(void *h)
。
那么,這意味着:
*(*srslte_rf_devname)(void *h)
是一個const char
。(*srslte_rf_devname)(void *h)
是指向const char
的指針。(*srslte_rf_devname)
是一個函數,它采用void *
並返回一個指向const char
的指針。srslte_rf_devname
是一個指向采用void *
並返回指向const char
的指針的const char
的指針。以上之后,比較容易看到剩下的項目:
int (*srslte_rf_start_rx_stream)(void *h, bool now);
說srslte_rf_start_rx_stream
是一個指向函數的指針,該函數采用void *
和bool
並返回int
。int (*srslte_rf_stop_rx_stream)(void *h);
說srslte_rf_stop_rx_stream
是一個指向采用void *
並返回int
的函數的指針。void (*srslte_rf_flush_buffer)(void *h);
說srslte_rf_flush_buffer
是一個函數,它采用void *
並返回void
(nothing)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.