c++中 do while(0)妙用

c++中有些特定的场景需要使用goto语句,但是经常听到说尽量不要使用,会导致程序结构混乱等等。。
下面是do while(0)的一个例子

#include<winsock2.h>
#include<stdio.h>
#pragma comment(lib,"ws2_32.lib) // 链接windows的库
int main()
{
	WORD wVersionRequested = MAKEWORD(2,2);
	WSADATA wsaData;
	int err = WSAStartup(wVersionRequested,&wsaData);
	if(err!=0)
	return 1;
	SOCKET sockSrv = -1;
	do{
		if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2)
  			 break;
//创建 socket
		sockSrv = socket(AF_INET,SOCK_STREAM,0);
		if(sockSrv == -1)
			break;
		SOCKADDR_IN addrSrv;
		addrSrv.sin_addr.S_un.S_addr = hton1(INADDR_ANY);
		addrSrv.sin_family = AF_INET;
		addrSrv.sin_port =htons(6000);
		if(bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR))==-1) // 绑定
			break;
    	if(listen(sockSrv,15)==-1)
    		break;
    	SOCKADDR_IN  addrClient;
    	int len = sizeof(SOCKADDR);
    	char msg[] = "hello world";
    	while(1)
    	{
        // 循环接收客户端连接
        	SOCKET sockClient = accept(sockSrv,(SOCKADDR*)&addrClient,&len);
        	if(sockClient == -1)
             	 break;
        // 发给客户端消息
        	send(sockClient,msg,strlen(msg),0);
       	 closesocket(sockClient);
     	}
	}while(0);
	if(sockSrv !=-1)
 	closesocket(sockSrv);
 	WSACleanup();
	return 0;
}
补充:利用do while()循环巧妙的将资源的回收操作集中到一个地方
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值