今天在给Linux驱动程序添加阻塞IO机制时遇到 一个警告
include/linux/wait.h:57:2: 警告: ISO C90 不允许混合使用声明和代码 [-Wdeclaration-after-statement]
wait_queue_t name = __WAITQUEUE_INITIALIZER(name, tsk)
警告点:
原因:
其实这个警告就是说不允许变量定义和代码混乱,不能将变量定义写在代码下面,在子函数中变量的定义应该写在函数开头
在上面的代码中
value = atomic_read(&dev->releasekey);属于代码而DECLARE_WAITQUEUE(wait, current); 确是定义
将上述代码改为:
编译通过无警告,
重要的是说三遍:
变量定义/声明写在最前面!!!
变量定义/声明写在最前面!!!
变量定义/声明写在最前面!!!