c语言错误不允许使用不完整的类型,C语言不允许使用不完整的类型报错是什么意思啊...

本文讨论了C语言中遇到'不允许使用不完整的类型'错误的原因和解决办法。通常,这错误发生在定义结构体后,直接使用结构体变量而未指定结构体名称。解决方案是在变量声明前加上'struct'关键字。例如,定义结构体mystruct后,正确用法是'struct mystruct x, y;'而非'mystruct x, y;'." 113618312,8461835,灰度共生矩阵在纹理分析中的应用,"['图像处理', '纹理特征', 'GLCM', '统计量']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

关注:63  答案:5  mip版

解决时间 2021-01-16 18:39

e6cb1a03ad541b3098697807b7bf1798.png

提问者妳熄滅叻菸,説啓従偂

2021-01-15 19:43

#include

#include

#include

int judge(struct info* m,struct info* n);

#define FORMAT p[i].number, p[i].name,p[i].question,p[i].answer,p[i].memory,p[i].costtime,p[i].lang,p[i].length,p[i].date,p[i].time

int main()

{

int t,i=0,j; //j为有多少组数据,通过循环来完成

scanf("%d",&t);

struct info

{

char name[12];

char time[10];

char date[11];

char answer[11];

char lang[5];

char question[5];

char memory[10];

char number[6];

char costtime[10];

char length[7];

};

struct info *p=0;

p=(struct info*)malloc(2*t*sizeof(struct info));

while(i

{

scanf("%s%s%s%s%s%s%s%s",FORMAT);

i++;

}

for(i=0;i

{

judge(p[i],p[i+1]);

}

free(p);

p=0;

}

int judge(struct info* m,struct info* n)

{

int k=1;

if(strcmp(m->question,n->question)!=0)k=0;

if(strcmp(m->answer,n->answer)!=0)k=0;

if(strcmp(m->memory,n->memory)!=0)k=0;

if(strcmp(m->costtime,n->costtime)!=0)k=0;

if(strcmp(m->length,n->length)!=0)k=0;

if(strcmp(m->lang,n->lang)!=0)k=0;

if(k==0)printf("%s might have not copied the code of %s.",m.name,n.name);

else printf("%s might have copied the code of %s.",m.name,n.name);

}

最佳答案

e6cb1a03ad541b3098697807b7bf1798.png

二级知识专家有你才幸福

2021-01-15 20:30

意思就是出现“不允许使用不完整信息”一般是你定义了一个结构体。

比如:struct {

int a;

char b;

}mystruct;

然后你在使用这个结构体给变量定义的时候写成了这样:

mystruct x,y;

在ANSI C语言中这样是不允许的(C++可以)

要写成这样:

struct mystruct x,y;

就没有问题了。

扩展资料:

不允许使用不完整的类型说明

class base;

struct test;

base和test只给出了声明,没有给出定义。不完整类型必须通过某种方式补充完整,才能使用它们进行实例化,否则只能用于定义指针或引用,因为此时实例化的是指针或引用本身,不是base或test对象。

一个未知长度的数组也属于不完整类型:

extern int a[];

extern不能去掉,因为数组的长度未知,不能作为定义出现。不完整类型的数组可以通过几种方式补充完整才能使用,大括号形式的初始化就是其中一种方式:

int a[] = { 10, 20 };

全部回答

e6cb1a03ad541b3098697807b7bf1798.png

1楼幼稚园小班大佬

2021-01-15 22:49

未知

e6cb1a03ad541b3098697807b7bf1798.png

2楼臸釪樶初

2021-01-15 22:36

能截个图上来吗?

e6cb1a03ad541b3098697807b7bf1798.png

3楼是你的阿离

2021-01-15 22:14

可能是是没有包含头文件,我遇到了这个问题就是这样解决的

e6cb1a03ad541b3098697807b7bf1798.png

4楼時光叫我忘了他

2021-01-15 20:58

就C语言来说,出现“不允许使用不完整信息”一般是你定义了一个结构体

比如 struct {

int a;

char b;

}mystruct;

然后你在使用这个结构体给变量定义的时候写成了这样:

mystruct x,y;

在ANSI C语言中这样是不允许的(C++可以)

要写成这样:

struct mystruct x,y;

就没有问题了。

我要举报

如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

→点此我要举报以上信息!←

推荐资讯

大家都在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值