我有一个使用 hrtimer 的驱动程序。对于以下函数定义,我得到了省略的参数名称
enum hrtimer_restart (hr_toggle)(struct hrtimer *hrt)
{
<some code>
}
这段代码有什么问题?我给出了一个有效的结构。
更新:我也尝试过使用不带括号的函数名。 结果是一样的。我正在使用 ubuntu arm-linux-gnueabi-gcc 中现在可用的标准 arm gcc 编译器
最佳答案
“参数名称省略”是 GCC 系列编译器在函数定义中(自然地)省略参数名称时给出的错误,这在 C 中是不允许的。
最新的 Clang 和 GCC 版本实际上不反对上面的声明(假设 struct hrtimer
和 enum hrtimer_restart
的定义),所以我猜你是不使用其中之一,而是使用不完全符合 C 规范的不同编译器。问题中的代码是正确的,不应拒绝。
如果是这样,它可能没有识别出函数名称允许放在括号中,并且错误地将 hrtimer_restart
解析为函数名称,将 hr_toggle
解析为类型第一个参数的(并且......在放弃之前还没有注意到 enum
不是返回类型 - 奇怪的做事顺序)。
从名称中删除括号,或者最好将编译器/编译器的设置更改为更完全兼容的设置,应该可以解决这个问题。
关于c - 函数返回枚举的参数名称省略错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26750931/