我目前有一段代碼,我正在使用函數指針作爲回調。我無法從具有誤差GCC聲明「指定參數`類型名稱存儲類「」代碼的相關部分是:C函數指針爲參數`類型名稱'指定錯誤存儲類
error_t addCommand(uint8_t command, void (*callback)(uint16_t,uint8_t)){
這實際上是使用基於TinyOS的nesC的語言,但它似乎是一個C問題。在我對這個問題的研究,我發現的建議大多是制止從一兩個問題:
- 一些錯誤的標題(缺少分號)
- 傳遞函數指針與靜態或揮發性值(即0
據我可以告訴我已經消除了問題1,問題2只有當uint16_t
或uint8_t
是靜態的揮發性(我沒有與這些類型的很多經驗)的問題。任何提示/如何回答爲了解決這個問題,我們非常感謝
此外,如果任何人都熟悉的nesC確切的代碼看起來更像是這樣的:
command error_t CommandEngine.addCommand(uint8_t command,
void (*callback)(uint16_t,uint8_t)) {
它可能什麼nesC中也加入到了C語言會導致這個錯誤,但我不認爲這是案子。
編輯:這是nesC,在某種程度上。事實證明,我是一個笨蛋,並且在命令被nesC使用時將命令用作變量名,並在編譯之前轉換爲一些C代碼塊。感謝大家把它轉換成C代碼的想法,因爲這讓我意識到了這個問題。我真的應該想到這一點。
void(* callback)(uint16_t,uint8_t) - 它不只是一種類型嗎?在函數定義期間,我們不應該有一個參數名嗎? – Jay
另一個存儲類是'extern',所以看看是否有'extern'沒有正確使用的情況。 – acraig5075