我目前有一段代码,我正在使用函数指针作为回调。我遇到了来自 gcc 的错误,说明“为参数‘类型名称’指定了存储类”相关的代码部分是:
error_t addCommand(uint8_t command, void (*callback)(uint16_t,uint8_t)){
这实际上是使用 TinyOS 的 nesC 语言,但它似乎是一个 C 问题。在我对该问题的研究中,我发现建议主要来自以下两个问题之一:
- 标头有问题(缺少分号)
- 传递具有静态或易失性值的函数指针(即
void (*callback)(volatile int, uint8_t)
据我所知,我已经消除了问题 1。问题 2 只是一个问题,如果uint16_t
或者uint8_t
是 volatile 的静态(我对这些类型没有太多经验)。非常感谢有关如何解决此问题的任何提示/答案。
此外,如果有人熟悉 nesC,确切的代码看起来更像这样:
command error_t CommandEngine.addCommand(uint8_t command,
void (*callback)(uint16_t,uint8_t)) {
nesC 添加到 C 语言中的内容可能会导致此错误,但我认为情况并非如此。
编辑:在某种程度上,它是 nesC。事实证明,我是个白痴,当 nesC 使用 command 并在编译之前转换为某个 C 代码块时,我使用 command 作为变量名。感谢大家将其转换为 C 代码的想法,因为这让我意识到了这个问题。我真的应该想到这一点。