爲清楚,請查看我的樣品jmp_buf
我有兩個文件:main.cpp中和myfunction.h
這是main.cpp中
#include <setjmp.h>
#include <myfunction.h>
int main()
{
if (! setjmp(bufJum)) {
printf("1");
func();
} else {
printf("2");
}
return 0;
}
這是myfunction的.h
#include <setjmp.h>
static jmp_buf bufJum;
int func(){
longjum(bufJum, 1);
}
現在,我想讓我的屏幕打印「1」,然後打印「2」,但此代碼不正確! 請幫幫我! 非常感謝!
請告訴我們究竟發生了什麼,而不僅僅是說它不起作用。它會崩潰嗎?它什麼都不輸出?有些東西,但錯誤的東西?如果是這樣,什麼? – KRyan 2012-08-09 04:56:57
我很驚訝你沒有得到一個錯誤,當你建立這個,因爲你定義變量'bufJum'兩次,_and_ spell'longjmp'錯誤! 1:不要將定義放在頭文件中; 2:如果你想從多個源文件訪問一個變量,不要使它成爲'static'; 3:避免'setjmp' /'longjmp'作爲瘟疫!它在C++中不能很好地運行,如果你不是非常小心的話,它實際上可能會產生很多奇怪的運行時錯誤。 – 2012-08-09 05:51:29
此外,說「此代碼不正確」是不夠的一個問題描述。 **編譯/鏈接/運行時會發生什麼**?如果有錯誤消息,請將它們(逐字,即複製粘貼)添加到問題中。另外,你沒有使用'setjmp' /'longjmp'是_multiple_文件,因爲你將_including一個文件放到另一個文件中,編譯器實際上只會看到一個文件。 – 2012-08-09 06:17:31