错误:取消引用指向不完整类型的指针

时间:2010-12-04 05:53:38

标签: c++ c

我在编译期间遇到上述错误:

结构:

struct connection_handlers
{
  int m_fd;

}

struct connection_handlers ** _queue;

int main()
{

_queue = (struct connection_handlers **) malloc ( 3* sizeof ( struct connection_handlers *)); //Allocating space for 3 struct pointers

for (i=0;i<3;i++)
{
     _queue[i]->m_fd=-1;
}//Initializing to -1

//.....
//I assign this varaible to the file descriptor returned by accept and then
//at some point of time i try to check the same variable and it gives compilatio error.

for (i=0;i<3;i++)
{
if (_queue[i]->m_fd!=-1)
}//It give error at this line. 

}

错误的原因可能是什么。

由于

2 个答案:

答案 0 :(得分:4)

既然你用C和C ++标记了这个问题,那么这就是你的C ++出了什么问题。

  • 不要将struct放入你的演员阵容
  • 不要将隐式int用于循环计数器
  • struct声明需要终止;
  • _queue声明为混乱类型
  • 您的上一个循环丢失

一旦你清理它就可以编译好。

#include <cstdlib>

struct connection_handlers {
  int m_fd;
};

int main() {
  connection_handlers**  _queue = (connection_handlers**) malloc(3*sizeof (connection_handlers*));

  for (int i=0;i<3;i++) {
    _queue[i]->m_fd=-1;
  }

  for (int i=0;i<3;i++) {
    if (_queue[i]->m_fd!=-1)
      ; // DOES NOTHING
  }
}

答案 1 :(得分:1)

_queue[i]connection_handlers *。您无法将其与-1进行比较,后者为int。您的意思是检查_queue[i]->m_fd吗?