例如如下的程序:LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){static HGLRC hRC; //繪制環境static HDC hDC; //設備環境switch(message){case WM_CLOSE: //窗口被關閉wglMakeCurrent(hDC,NULL); //取消選定的繪制環境wglDeleteContext(hRC); //刪除繪制環境PostQuitMessage(0); //發送WM_QUIT消息 return 0;break;default: //默認處理break;}//傳遞所有未處理的消息至默認消息處理函數DefWindowProcreturn (DefWindowProc(hwnd,message,wParam,lParam));}上面的代碼格式有點問題,是這樣的:PostQuitMessage(0); //發送WM_QUIT消息 return 0;break;記得學C++的時候case后面只用break就行了,但是這里卻同時用了return 0;
3 回答

達令說
TA貢獻1821條經驗 獲得超6個贊
錯。
這樣寫是標準合法的。
因為很多編譯器不標準,對于retun語句只是記錄返回值,然后還要接下來執行。并且函數類型的不同(pascal,std,cdecl,fast等),編譯成匯編代碼后函數出口入口的語句都有很大差別。
所以推薦的寫法就是case里面即使返回,也要break.否則有些編譯器就出錯。
你要是用bcb就知道,bcb就經常出現過這樣的錯誤,即使vc,我也遇到過調試狀態下不用break會出錯的情況。
尤其是大型工程項目,語法必須標準,否則出錯很難查找。
- 3 回答
- 0 關注
- 162 瀏覽
添加回答
舉報
0/150
提交
取消