c++mfc为何报错不允许指针指向不完整的类类型?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++mfc为何报错不允许指针指向不完整的类类型?相关的知识,希望对你有一定的参考价值。

在C语言控制台程序里不报错,一到mfc就报错写在dlgcpp button控件通知处理程序代码中,还没做完报错点就一个,在下面struct rgb *RGB; IMAGE picture; DWORD *pic; FILE *fp_rgb; char pic_name[30]; char pic_name1[30]; printf("请输入图片信息如(yyk.jpg)\n"); scanf("%s", pic_name); loadimage(&picture, pic_name);//读取图片信息 pic = GetImageBuffer(&picture);//获取设备显存 unsigned int h = picture.getheight();//获取图片高度 unsigned int w = picture.getwidth();//获取图片宽度 RGB = (struct rgb *)malloc(sizeof(struct rgb*)*h*w);//分配内存 if (!(fp_rgb = fopen(pic_name, "w")))//打开图片文件 printf("error"); system("pause"); return; int m_dx = 2,m_dy = 78,m_count = 1; int dayin = 1; char name[30] = "把文本复制到第1个逻辑处理器"; while (1) for (int i = 0; i <= 254; i++) RGB->b = GetRValue(pic[i]);//////////就这几个RGB一直报错,显示IntelliSense: 不允许指针指向不完整的类类型 RGB->g = GetGValue(pic[i]);/////////// RGB->r = GetBValue(pic[i]);/////////// fprintf(fp_rgb, "draw color %d %d %d 255 0 0\ndraw rect %d %d 2 2 0 0\n", RGB->r, RGB->g, RGB->b, m_dx, m_dy); if (m_count >= 20) m_dx = 2; m_count = 0; m_dy = m_dy - 2; else m_dx = m_dx + 2; m_count++; fprintf(fp_rgb, "drawflush display1\nend"); dayin++; fclose(fp_rgb);//关闭 free(RGB); printf("SUCESS!");

你的struct rgb的类型是不是没有在这段代码之前定义?这在C和C++都不允许 参考技术A 这在C和C++都不允许

c语言报错不允许使用不完整类型,让用户自定义数组大小。

void Input()

struct student *num1;
int num;
printf("请输入学生的总人数:\n");
scanf("%d,&num");
num1 = (struct student*)calloc(num,sizeof(struct student));//其中struct下显示不允许使用不完整类型。
printf("");后边没写完

struct student

int num;/*学号*/
char name[20]; /*姓名*/
char sex; /*性别(M/W)*/
int NO; /*名次*/
float score1; /*第一门课程成绩*/
float score2; /*第二门课程成绩*/
float sum; /*成绩总和*/
;这是结构体变量的定义

num1 = (struct student*)calloc(num,sizeof(struct student));不是这么写,应该是这样 :


num1 = (student*)calloc(num,sizeof(student));

追问

你用的是什么,编译没报错?还是这么显示有错误啊,我用的是visual studio 2010。谢谢了。

追答// 刚才没仔细看,编译了一下,才发现不少问题,试试这个。
#include "stdio.h"
#include "malloc.h"

struct student

  int num;/*学号*/
  char name[20]; /*姓名*/
  char sex; /*性别(M/W)*/
  int NO; /*名次*/
  float score1; /*第一门课程成绩*/
  float score2; /*第二门课程成绩*/
  float sum; /*成绩总和*/
;

void Input()

  student *num1;
  int num;
  printf("请输入学生的总人数:\\n");
  scanf("%d", &num);
  //scanf("%d,&num");
  num1 = (student*)calloc(num,sizeof(student));//其中struct下显示不允许使用不完整类型。

参考技术A void Input()

struct student *num1;
int num; printf("请输入学生的总人数:\n");
num1 = (struct student*)calloc(num,sizeof(struct student));//其中struct下显示不允许使用不完整类
scanf("%d\n",&num);
printf("");
参考技术B 问题源自你的struct student定义,把目前的全部代码贴出来

你的struct student要在函数定义之前。问题不难,要么截图,或者hi我。
参考技术C 定义struct student

以上是关于c++mfc为何报错不允许指针指向不完整的类类型?的主要内容,如果未能解决你的问题,请参考以下文章

C语言 不允许使用不完整的类型

C语言不允许使用不完整的类型报错是啥意思啊

C语言 不允许使用不完整的类型

typedef struct 导致“不允许指向不完整类型的指针”错误

“不允许指向不完整类类型的指针”

部分模板类中不允许指向不完整类类型的指针