当前位置: 代码迷 >> 综合 >> error :dereferencing pointer to incomplete type错误解决
  详细解决方案

error :dereferencing pointer to incomplete type错误解决

热度:5   发布时间:2023-11-20 03:09:13.0

该错误指的是是不完整的类型,一般出现在定义结构体指针类型声明的时候。真正出现的问题原因是这个结构体根本就没有定义,或者是定义的头文件并没有被正确引用进来。

想要解决该问题,有两种方法可供参考:

1.包含定义该结构体的头文件

2.如果结构定义在c文件中,而不是定义在h文件的话,建议将结构体定义在h文件中,然后再包含.h的这种做法

3.直接将该结构体拷贝到报错的文件中(不建议使用

例:

test3:
#include<stdio.h>int main(int argc, char **argv)
{call_num();
}test2:
#include <stdio.h>void call_num()
{struct zt_t *p = get_num();p->x = 356;p->y = 325;show(p);
}test1:
#include <stdio.h>struct zt_t {int x;int y;
};struct zt_t num;struct zt_t * get_num()
{num.x = 123;num.y = 456;return &num;
}void show(struct zt_t *buf)
{printf("%s %d %d %d \n",__func__,__LINE__ ,buf->x, buf->y);
}

编译结果如下:

 

修改如下所示:

test3:
#include<stdio.h>
#include "test.h"int main(int argc, char **argv)
{call_num();
}test2:
#include <stdio.h>
#include "test.h"void call_num()
{struct zt_t *p = get_num();p->x = 356;p->y = 325;show(p);
}test1:
#include <stdio.h>
#include "test.h"struct zt_t num;struct zt_t * get_num()
{num.x = 123;num.y = 456;return &num;
}void show(struct zt_t *buf)
{printf("%s %d %d %d \n",__func__,__LINE__ ,buf->x, buf->y);
}test.h
#ifndef __TEST_H__
#define __TEST_H__struct zt_t {int x;int y;
};
struct zt_t * get_num();#endif

编译结果如下所示:

 

  相关解决方案