当前位置:首页 » 编程语言 » c语言中如何解决异常
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中如何解决异常

发布时间: 2023-02-26 21:32:03

1. 如何用c语言实现异常/状况处理机制

反对,不会显示你的姓名
余天升网络安全、密码学、编程语言、编程话题优秀回答者 …
2 人赞同
在没有垃圾回收的情况下,使用异常机制绝对会降低程序的质量。Symbian C++中,使用了一种Leave机制,是对C++中异常机制的包装,而且因为Symbian系统运行在资源有限的嵌入式设备上的原因,栈空间很小,几乎所有的数据都要放在堆上,所以Symbian C++中引入了… 显示全部
在没有垃圾回收的情况下,使用异常机制绝对会降低程序的质量。Symbian C++中,使用了一种Leave机制,是对C++中异常机制的包装,而且因为Symbian系统运行在资源有限的嵌入式设备上的原因,栈空间很小,几乎所有的数据都要放在堆上,所以Symbian C++中引入了清除栈机制来避免内存泄漏的问题。

Symbian C++中要求,刚创建的对象,在没有保存到别的对象之前,应该立刻放到清除栈中保存,以便一旦产生Leave(异常),系统可以将清除栈中的对象销毁,防止内存泄漏。于是这样子代码就好麻烦了,每一次都要写类似的代码
HSomeClass* anInstance = HSomeClass.NewL();
CleanupStack::PushL(anInstance);
HSomeOtherClass* aNewInstance = HSomeOtherClass.NewL();
CleanupStack::PushL(aNewInstance);
.......
CleanupStack::Pop();
return;

所以,如果你想在C中使用异常机制的话,那么你需要:包装把setjump包装成TRAP宏,然后在实现一个清除栈。这个清除栈要分类型,一般的数据是一种,句柄又是一种,C中还不好实现类似IDispose之类的接口。另外,Symbian没落的一个原因是,这样的机制过于复杂,好多人都搞不懂,还是负责垃圾回收的Java比较方便,详见另外一则答案 http://www.hu.com/question/20304750/answer/14686650 。

2. C语言编译错误如何解决

C语言编译错误如何解决,
办法就是逐条分析编译错误提示输出的信息,并按照提示修改,
没有捷径,只能一条条地把编译出错的地方修改掉。
建议从前往后改,因为有可能后面的错误都是第一条的错误引起的。
所以可以改完几条就重新编译下,看修改的地方是否通过编译了。
如此循环,直到消除所有的错误。
请采纳,谢谢

3. 文件中C语言出现错误,该如何解决

C语言中大部分错误是语法错误,语法总结如下。

4. c语言未经处理的异常,求大佬指点

您好,很高兴回答您的问题。

您的这个题目,系统已经很明显告诉您了错误的原因。因为您定义的x为字符型数据,那么它对应的输入输出格式符为%c,但是您在输入语句中写的是%s,是字符串格式,不符合字符型单个变量的输入输出。根据题目意思,应该是要输入字符串,那么定义的时候就要写成charx[2],因为存放的是性别中文字,所以数组长度定义为2就可以了。您再试试哦。

5. c语言程序异常终止

#include<stdio.h>

voidmain(){

printf("——黄英来到由唐明明编译的学生成绩系统—— ");

intrs,km;

printf("请定义学生人数:");

scanf("%d",&rs);

printf("请定义科目数:");

scanf("%d",&km);

charsubject[10][10];

for(inti=0;i<km;i++){

printf("请输入第%d课科目名称:",i+1);

scanf("%s",subject[i]);

}

charname[100][20];

doublescore[100][10];

for(intm=0;m<rs;m++){

printf("请输入第%d为学生姓名:",m+1);

scanf("%s",name[m]);//运行到这儿程序就异常终止

for(intn=0;n<km;n++){

printf("请输入%s的%成绩",name[m],subject[n]);

scanf("%lf",&score[m][n]);

}

}

}

6. c语言异常怎么捕获有几种方式

C语言没有异常这一说,请自行进行合法性的判断。

1.使用标准C库提供了abort()和exit()两个函数,强行终止程序的运行,<stdlib.h>。

2.使用assert(断言)宏调用,<assert.h>。

3.使用errno全局变量,<errno.h>。

4.使用goto跳转。

5.使用setjmp,longjmp跳转。