2013-07-29 21 views

回答

4

setjmp功能類似於創建標籤(在goto意義上的),因此你首先會從setjmp返回當您設置標籤,然後每一次,你實際上跳過。

如果它似乎不可思議,放心,你不應該在你的日常編程使用setjmp。或者實際上......你應該完全不用。這是打破預期的執行流程(很像goto),特別是在C++中一個非常低級的指令,大部分的不變量,你可以期待。

1

當你調用setjmp,它確立了一個折返點,然後繼續執行立即setjmp調用下面的代碼。

在某一點在後面的代碼,調用longjmp(與以前調用初始化setjmp跳轉緩存)返回執行從同一點重新開始(即代碼立即呼叫的setjmp以下)。

因此,原來的調用正常返回,然後在任意晚些時候,執行返回(或至少可以返回)再次到同一個點。

屬性只是警告這一事實的編譯器。