error :dereferencing pointer to incomplete type错误解决
·
该错误指的是是不完整的类型,一般出现在定义结构体指针类型声明的时候。真正出现的问题原因是这个结构体根本就没有定义,或者是定义的头文件并没有被正确引用进来。
想要解决该问题,有两种方法可供参考:
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 #
}
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 #
}
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
编译结果如下所示:
更多推荐
已为社区贡献6条内容
所有评论(0)