下标值既不是数组也不是指针

时间:2011-09-30 20:12:29

标签: c unix pipe

我正在编写一个C程序,其中我正在使用IPC的管道数组。我收到错误“下标值既不是数组也不是指针”。任何人都可以告诉我哪里出错了?

这是我收到错误的代码:

  int p[100][2];
  //in for loop
  pipe(p[i-1]);
  //in child process
  close(p[i-1][0]);
  write(p[i-1][1], out, sizeof(NODE));
  //in parent process
  close(p[j][1]);
  ead(p[j][0], tmp, sizeof(NODE));

2 个答案:

答案 0 :(得分:3)

专家提示:在C中解决构建错误时,不会在列表中选择任何随机错误并尝试修复它。从产生的第一个错误开始,因为它可能是后续许多其他错误的根本原因。

答案 1 :(得分:1)

您的代码中的其他位置必须有一个语法错误,它会抛弃int p[100][2]的声明,因此标识符p未被适当地解析为{{1}类型的二维数组在堆栈上分配(或静态分配为全局变量......你没有提到它被声明的位置。)。由于未正确解析标识符,因此它还会在代码中抛弃int的所有其他用法。