程序如下:
----------------------------------------------------------------------------
#define MOTOR_MAGIC 'k'
#define SET_PULSE _IOW(MOTOR_MAGIC, 1,int)
.
.
static int motor_ioctl(struct inode *inode,struct file *filp,unsigned int cmd,unsigned long arg)
{ int data=0;
int retval;
switch (cmd) {
case SET_PULSE:
if (copy_from_user(&data, (int *)arg, sizeof(int)))
return -EFAULT;
.
.
.
}
---------------------------------------------------------------------------
“cmd”要求是个无符号的整数,可是 “SET_PULSE”是什么数据类型?
由宏定义可得出:
#define SET_PULSE _IOW('k' , 1,int)
k是字符,怎么与整数相或?得出的是什么类型数据?
yyyhhh1818 于 2009-04-03 08:27:07发表:
明白了,多谢wang7131984朋友指点!
wang7131984 于 2009-04-02 10:41:51发表:
SET_PLUSE应该是某个头文件中定义的宏吧。k固然是字符,但是字符也是2进制数怎么就不能与整数或了呢。得到数应该是整数,因为字符在与整数运算的过程中进行了转换,至于最后的实际结果要取决与你是否进行了强制类型转换。