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));不是这么写,应该是这样 :
你用的是什么,编译没报错?还是这么显示有错误啊,我用的是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为何报错不允许指针指向不完整的类类型?的主要内容,如果未能解决你的问题,请参考以下文章