标题:请教关于"函数结果状态玛"的问题
只看楼主
xiaohuli120
Rank: 1
等 级:新手上路
帖 子:106
专家分:0
注 册:2006-4-10
 问题点数:0 回复次数:2 
请教关于"函数结果状态玛"的问题
请问"函数结果状态玛"有什么作用?是怎样工作的?
比如:
"// 函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等
typedef int Boolean; // Boolean是布尔类型,其值是TRUE或FALSE
#define MAX_NAME 10

然后定义函数:
Status xxxx(xx &xx){
……………… ;
…………… ;
……………… ;
return OK;  //函数正常结束后将"OK"反回给主函数(整数1?) 这么做有什么意义嘛?
}

请详细讲解一下,谢谢!

[此贴子已经被作者于2006-9-24 12:16:16编辑过]

搜索更多相关主题的帖子: 函数结果 布尔 define 状态 Status 
2006-09-24 12:11
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 
C语言是没有异常处理机制的,调用函数的主函数如果想要了解子函数运行结果的情况只能通过三个途径来感知:

1.外部变量
2.传址
3.返回值

你现在用的Status是第3种方法,主函数可以通过调用完子函数后得到的返回值来判断子函数运行是否正常,然后对结果进行相应的处理.
一般来说,用返回值的形式感知子函数异常,这样做是比较愚蠢的,因为他占用了最宝贵的return -- 要知道每个函数只能有一个return

我推荐的做法是把异常感知通过传址的方式提交给子函数.
比如

#define ERROR 0
#define OK 1

unsigned int strlenx(char* str, int* exp)
{
if( str == NULL )
{
*exp = ERROR;
return null;
}
*exp = OK;
return strlen(str);
}

[此贴子已经被作者于2006-9-24 12:20:27编辑过]


淘宝杜琨
2006-09-24 12:19
xiaohuli120
Rank: 1
等 级:新手上路
帖 子:106
专家分:0
注 册:2006-4-10
得分:0 
好,还是版主有学问.谢谢

2006-09-24 12:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-92598-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015011 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved