个人优秀代码片段2
2015-11-28 14:55
281 查看
define dealWithErr(v) \
do{ \ errno = 0; \ if ((v) < 0) \ { \ fprintf(stderr, "filename: %s(%d): " #v "failure\n",\ __FILE__, __LINE__); \ fprintf(stderr, "error number = %d\n", errno); \ exit(EXIT_FAILURE); \ } \ } while (0)
static void porting_test_server_control(int mode)
{
const int reuseaddr = 1;
struct sockaddr_in seraddr;
/*注册常用信号*/ register_common_signal(); dealWithErr((sockfd = socket(AF_INET, SOCK_STREAM, 0))); seraddr.sin_family = AF_INET; seraddr.sin_port = htons(SOCK_PORT_NUM); seraddr.sin_addr.s_addr = inet_addr(SOCK_IP_ADDR); dealWithErr(setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (const void *)&reuseaddr, sizeof(reuseaddr))); dealWithErr(bind(sockfd, (struct sockaddr *)&seraddr, sizeof(seraddr))); dealWithErr(listen(sockfd, SOCK_CONNECT_MAX)); non_block_monitor(mode, sockfd); closesocket(sockfd);
}
在主流程中减少分支可以让代码逻辑更紧蹙,更易维护。
以上是一种含有简单错误处理的分支封装方法。
相关文章推荐
- Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
- HEVC编码之Intra/Inter预测分析
- stagefright MKV/WebM parser
- gOS初体验
- gOS初体验
- 解决unicodedecodeerror ascii codec can’t decode byte 0xd7 in position 9 ordinal not in range(128)
- deprecated conversion from string constant to 'char*'
- deprecated conversion from string constant to 'char*' 解决方法
- ffmpeg视频格式转换分析
- 转载:QT小技巧
- 什么是H.264? 有哪些相关的产品?
- FFMPEG解复用、解码测试,音频保存WAV文件,视频保存为PPM图像
- Ubuntu 麦无声音解决方法
- MPEGLAYER3WAVEFORMAT Structure
- PC远程多媒体通信 (Notes)
- 编译sqlite3和wxSqlite3(含加密) 【原创】
- 杭州的华为人在深圳
- 解决unicodedecodeerror ascii codec can’t decode byte 0xd7 in position 9 ordinal not in range(128)
- DVSDK_3.01.00.10编译笔记
- H264 _&&_NAL_&&_RTP