错误:'struct'之前的预期表达式

时间:2015-02-13 08:02:17

标签: c struct

我有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。提前帮助谢谢。

3 个答案:

答案 0 :(得分:0)

_IOWR似乎是函数调用。一个函数调用你不能给出一个类型;你只能给它一个变量。

答案 1 :(得分:0)

鉴于您的代码,我认为您尝试使用类似行为的函数定义宏。鉴于此,在预处理器中,您不关心" arguments"中的类型。

一个好的(在我看来真的很好)指向入门是来自linux的队列定义。

您可以查看:http://linux.die.net/man/3/queue

答案 2 :(得分:0)

  

我没有得到我所缺少的东西。

您缺少_IOWR()宏的定义。

#include <linux/ioctl.h>

sample.h