0
這些函數的返回值並不意味着它們是否成功。有什麼方法可以知道嗎?如何知道sigsetjmp或siglongjmp是否失敗?
這些函數的返回值並不意味着它們是否成功。有什麼方法可以知道嗎?如何知道sigsetjmp或siglongjmp是否失敗?
sigsetjmp
不能失敗 - 它只是將調用者的上下文存儲到提供的緩衝區中。
siglongjmp
不返回,因此無法通過返回值指示失敗。調用之前,您必須確保緩衝區有效。
在C++中,您通常不能使用這些函數;調用longjmp
會導致未定義的行爲,如果在調用堆棧中存在任何具有非平凡析構函數的自動對象,並且與setjmp
之間的匹配調用。
這些標記有點奇怪 - 它們不是系統調用,並且您通常不能在C++中使用這些函數。 – 2012-04-17 15:17:53
真的很好奇,你想要防範哪種失敗,以及你如何在C++中使用它們? – Potatoswatter 2012-04-17 15:34:46