数组类型具有不完整的元素类型?

时间:2016-02-18 09:32:08

标签: c arrays struct ubuntu-14.04 system-calls

我正在尝试编写一个程序,将信息从内核空间传递到ububtu 14.04上的用户空间。我声明了struct如下:

typedef struct
{
   long pid;
   char TTY[64];
   unsigned long long time; 
   char COMM[64]
  } myTasks; 

在main中,我然后创建一个myTasks结构数组,如:

struct myTasks taskInfo[2500]; 
//do stuff 
syscall(__NR_my_syscall2,numTasks,sizeof(taskInfo),taskInfo); // use it here

然而,当我这样做时,我在这一行上收到错误说:

  

struct myTasks taskInfo [2500]错误:数组类型具有不完整的元素

我做错了什么?我想创建一个myTasks结构数组,我可以将其作为缓冲区传递给系统调用...但我无法弄清楚我做错了什么。我是C的新手,所以非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

typedef将匿名结构编辑为myTasks。要声明您的数组,请使用myTasks taskInfo[2500]

C认为您正在声明一个名为结构struct myTasks的新,但由于您没有定义结构,因此它不完整。但是,myTasks是您已定义的结构的别名。

答案 1 :(得分:2)

myTasks taskInfo[2500]; type-alias ,而不是结构名称。正确使用它就是例如。

trueCondition()