21、goto语句的使用
2004-10-12 00:51
260 查看
—————————
N年前,软件开发的一代宗师——迪杰斯特拉(Dijkstra)说过:“goto statment is harmful !!”,并建议取消goto语句。因为goto语句不利于程序代码的维护性。
这里我也强烈建议不要使用goto语句,除非下面的这种情况:
#define FREE(p) if(p) { /
free(p); /
p = NULL; /
}
main()
{
char *fname, *lname, *mname;
fname = ( char* ) calloc ( 20, sizeof(char) );
if ( fname == NULL ){
goto ErrHandle;
}
lname = ( char* ) calloc ( 20, sizeof(char) );
if ( lname == NULL ){
goto ErrHandle;
}
mname = ( char* ) calloc ( 20, sizeof(char) );
if ( mname == NULL ){
goto ErrHandle;
}
......
ErrHandle:
FREE(fname);
FREE(lname);
FREE(mname);
ReportError(ERR_NO_MEMOEY);
}
也只有在这种情况下,goto语句会让你的程序更易读,更容易维护。(在用嵌C来对数据库设置游标操作时,或是对数据库建立链接时,也会遇到这种结构)
N年前,软件开发的一代宗师——迪杰斯特拉(Dijkstra)说过:“goto statment is harmful !!”,并建议取消goto语句。因为goto语句不利于程序代码的维护性。
这里我也强烈建议不要使用goto语句,除非下面的这种情况:
#define FREE(p) if(p) { /
free(p); /
p = NULL; /
}
main()
{
char *fname, *lname, *mname;
fname = ( char* ) calloc ( 20, sizeof(char) );
if ( fname == NULL ){
goto ErrHandle;
}
lname = ( char* ) calloc ( 20, sizeof(char) );
if ( lname == NULL ){
goto ErrHandle;
}
mname = ( char* ) calloc ( 20, sizeof(char) );
if ( mname == NULL ){
goto ErrHandle;
}
......
ErrHandle:
FREE(fname);
FREE(lname);
FREE(mname);
ReportError(ERR_NO_MEMOEY);
}
也只有在这种情况下,goto语句会让你的程序更易读,更容易维护。(在用嵌C来对数据库设置游标操作时,或是对数据库建立链接时,也会遇到这种结构)
相关文章推荐
- goto语句的使用
- 为什么使用goto语句作错误处理
- oracle中使用sql语句将date日期7月21日2017类型转换为7/21/2017
- 为什么使用goto语句作错误处理 by明智
- 使用控制结构——顺序控制语句——GOTO和NULL
- 为什么使用goto语句作错误处理
- 关于goto语句的使用浅谈
- goto 语句的使用(2)
- 使用if和goto语句构造循环
- 可以考虑使用goto语句的地方
- c#中为什么又重新使用了goto语句
- 为什么使用goto语句作错误处理
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)和不用循环/goto/递归输出1~100的10种写法
- 为什么使用goto语句作错误处理
- 用户登录的模拟 goto语句的使用
- c#中为什么又重新使用了goto语句
- PHP goto语句简介和使用实例
- 避免使用goto语句的几种方法
- 为什么使用goto语句作错误处理
- C 语言中的goto、 break 和 continue 语句使用