我有sample.h:
typedef struct _abcd_header{
U32 num;
U32 page;
int maxDataSize;
} abcd_header;
struct abcdcommand{
abcd_header hdr;
U32 timeout;
};
#define abcCommand _IOWR('m',20, struct abcdcommand)
和sample.c有:
struct abcdcommand *command;
command = (struct abcdcommand*)malloc(sizeof *command + 1);
memset(command, 0, sizeof *command);
int i = ioctl(10, abcCommand, command); //error: expected expression before'struct'
我没有得到我所缺少的东西。 PLS。提前帮助谢谢。
答案 0 :(得分:0)
_IOWR似乎是函数调用。一个函数调用你不能给出一个类型;你只能给它一个变量。
答案 1 :(得分:0)
鉴于您的代码,我认为您尝试使用类似行为的函数定义宏。鉴于此,在预处理器中,您不关心" arguments"中的类型。
一个好的(在我看来真的很好)指向入门是来自linux的队列定义。
答案 2 :(得分:0)
我没有得到我所缺少的东西。
您缺少_IOWR()
宏的定义。
#include <linux/ioctl.h>
在sample.h
。