相关疑难解决方法(0)

是否使用GOTO?

目前我正在开发一个使用goto语句的项目.goto语句的主要目的是在例程中使用一个清理部分而不是多个return语句.如下所示:

BOOL foo()
{
   BOOL bRetVal = FALSE;
   int *p = NULL;

   p = new int;
   if (p == NULL)
   {
     cout<<" OOM \n";
     goto Exit;
   }

   // Lot of code...

Exit:
   if(p)
   {
     delete p;
     p = NULL;
   }
   return bRetVal;
}
Run Code Online (Sandbox Code Playgroud)

这使得我们可以更容易地跟踪代码中一个部分的清理代码,即在Exit标签之后.

但是,我已经阅读了许多地方,有goto语句是不好的做法.

目前我正在阅读Code Complete书,它说我们需要使用接近其声明的变量.如果我们使用goto,那么我们需要在第一次使用goto之前声明/初始化所有变量,否则编译器会给出goto语句跳过xx变量初始化的错误.

哪条路对不对?


来自Scott的评论:

看起来使用goto从一个部分跳转到另一个部分是不好的,因为它使代码难以阅读和理解.

但是如果我们只使用goto前进到一个标签那么它应该没问题(?).

c++ goto

61
推荐指数
14
解决办法
8万
查看次数

标签 统计

c++ ×1

goto ×1