为了账号安全,请及时绑定邮箱和手机立即绑定

return 0执行之后还会执行break吗? 高手能帮我分析总结一下吗?

return 0执行之后还会执行break吗? 高手能帮我分析总结一下吗?

C++
慕姐8265434 2022-12-14 22:18:37
例如如下的程序: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会出错的情况。
尤其是大型工程项目,语法必须标准,否则出错很难查找。

查看完整回答
反对 回复 2022-12-18
?
手掌心

TA贡献1942条经验 获得超3个赞

return 0;
break;
是错误的;

break是退出当前的循环;
return是退出当前的函数。

查看完整回答
反对 回复 2022-12-18
?
临摹微笑

TA贡献1982条经验 获得超2个赞

那个break可以不写

只是为了好看:)

查看完整回答
反对 回复 2022-12-18
  • 3 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信