VC++:switch中case语句后面使用了return 0;和break;这个return 0;有什么作用?

例如如下的程序:LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam){static... 例如如下的程序:
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;
}

//传递所有未处理的消息至默认消息处理函数DefWindowProc
return (DefWindowProc(hwnd,message,wParam,lParam));
}
上面的代码格式有点问题,是这样的:
PostQuitMessage(0); //发送WM_QUIT消息
return 0;
break;
记得学C++的时候case后面只用break就行了,但是这里却同时用了return 0;
return 0执行之后还会执行break吗?
高手能帮我分析总结一下吗?
展开
 我来答
stone_dongdong
推荐于2017-10-03 · TA获得超过2853个赞
知道大有可为答主
回答量:1636
采纳率:0%
帮助的人:1029万
展开全部
错。
这样写是标准合法的。

因为很多编译器不标准,对于retun语句只是记录返回值,然后还要接下来执行。并且函数类型的不同(pascal,std,cdecl,fast等),编译成汇编代码后函数出口入口的语句都有很大差别。
所以推荐的写法就是case里面即使返回,也要break.否则有些编译器就出错。

你要是用bcb就知道,bcb就经常出现过这样的错误,即使vc,我也遇到过调试状态下不用break会出错的情况。
尤其是大型工程项目,语法必须标准,否则出错很难查找。
nnyuchenghai
2010-05-03
知道答主
回答量:29
采纳率:0%
帮助的人:20.4万
展开全部
return 0;
break;
是错误的;

break是退出当前的循环;
return是退出当前的函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yinfengnong
2010-05-03 · TA获得超过5619个赞
知道大有可为答主
回答量:2344
采纳率:89%
帮助的人:2305万
展开全部
return直接返回到调用函数的地方了.return之后的break;纯属多余.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_聂永
2010-05-03 · TA获得超过536个赞
知道小有建树答主
回答量:314
采纳率:0%
帮助的人:249万
展开全部
break是退出当前的循环;
return是退出当前的函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhsh955
2010-05-03 · 超过21用户采纳过TA的回答
知道答主
回答量:282
采纳率:0%
帮助的人:71.5万
展开全部
那个break可以不写

只是为了好看:)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式