91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中避免使用goto語句?的原因是什么

發布時間:2021-07-30 16:15:55 來源:億速云 閱讀:183 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關C++中避免使用goto語句的原因是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Reason(原因)

Readability, avoidance of errors. There are better control structures for humans; goto is for machine generated code.

可讀性,避免錯誤。存在另外的更好的代碼結構可用。

Exception(例外)

Breaking out of a nested loop. In that case, always jump forwards.

從嵌套循環中跳出。這種情況下,總是向前(代碼執行角度的向前,譯者注)跳。

for (int i = 0; i < imax; ++i)
   for (int j = 0; j < jmax; ++j) {
       if (a[i][j] > elem_max) goto finished;
       // ...
   }
finished:
// ...

Example, bad(反面示例)

There is a fair amount of use of the C goto-exit idiom:

存在相當數量的使用goto-exit慣用法的C代碼。

void f()
{
   // ...
       goto exit;
   // ...
       goto exit;
   // ...
exit:
   // ... common cleanup code ...
}

This is an ad-hoc simulation of destructors. Declare your resources with handles with destructors that clean up. If for some reason you cannot handle all cleanup with destructors for the variables used, consider gsl::finally() as a cleaner and more reliable alternative to goto exit。

這是析構函數特別合適的使用場景。定義資源管理類,在它的析構函數中執行清除動作。如果由于某種原因,析構函數不能在所有情況下中實現完全地清除,考慮使用gsl::finally作為清除器和goto的更可靠代替手段。

Enforcement(實施建議)

  • Flag goto. Better still flag all gotos that do not jump from a nested loop to the statement immediately after a nest of loops.

  • 標記goto語句。最好標識所有的goto語句。只有一種例外情況:從嵌套循環內跳轉到緊接在循環之后的代碼。


上述就是小編為大家分享的C++中避免使用goto語句的原因是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

南平市| 济源市| 安庆市| 叙永县| 曲靖市| 江北区| 田林县| 永清县| 石柱| 北流市| 赤峰市| 昭平县| 河西区| 水城县| 巴林右旗| 城步| 高要市| 麻栗坡县| 金山区| 屏山县| 景洪市| 合水县| 阿克苏市| 四子王旗| 宿迁市| 依兰县| 扶余县| 平果县| 景德镇市| 龙川县| 天峨县| 霍邱县| 绍兴市| 清河县| 平顶山市| 安义县| 长海县| 临夏县| 永修县| 高陵县| 乌兰察布市|