您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關C++中避免使用goto語句的原因是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
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:
// ...
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語句的原因是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。