2026年10月31日 · 今日 0 帖 · 会员 6.1万 · 主题 17.4万
登录 · 注册 · 游客,欢迎随便逛逛
返回版块
11406
Lv1韶华一笑间等级图标
帖子
62
回复
120
积分
2,076
注册
2011-02-07
[计算机网络]

C语言个人进阶【漫天教程】

[复制链接]
查看 528 回复 1
楼主 发表于 | 只看该作者
53 人收藏

争取把自己的一点一滴记下来-

1. 跨平台开发

1) 头文件包含

通过define开关包含不同的库,定义函数类型

#ifndef WIN32

#include “socket_posix.h“

#else /* WIN32 */

#include “socket_win32.h“

#endif /* !WIN32 */

结尾应该注明if适用情况。

2) 替换函数

#undef errno

#define errno WSAGetLastError()

#define read(fd, buf, size) recv(fd, buf, size, 0)

2. 常用宏

今天看到非常漂亮的一个应用:

利用宏##实现了IPv4和IPv6地址信息的初始化

#define FILL_SOCKADDR(AF_INET, sockaddr_in, sin, s, \

host, port, count, addrlen, addrs) \

do \

{ \

struct sockaddr_in *addr; \

int i; \

\

addrlen = sizeof(struct sockaddr_in); \

\

addr = (struct sockaddr_in *) calloc(count, addrlen); \

for (i = 0; i < count; ++i) \

{ \

addr.sin##_family = AF_INET; \

addr.sin##_port = port; \

memcpy(&addr.sin##_addr.s##_addr, \

ADDR(host, i), host->h_length); \

} \

\

addrs = (char *) addr; \

} \

while (0)

#define fill_sockaddr(host, port, count, addrlen, addrs) \

FILL_SOCKADDR(AF_INET, sockaddr_in, sin, s, \

host, port, count, addrlen, addrs)

#ifdef AF_INET6

#define fill_sockaddr6(host, port, count, addrlen, addrs) \

FILL_SOCKADDR(AF_INET6, sockaddr_in6, sin6, s6, \

host, port, count, addrlen, addrs)

#endif /* AF_INET6 */

登录回复
59437
Lv9有为九子能等级图标等级图标等级图标等级图标
勋章勋章勋章勋章勋章勋章勋章勋章
帖子
64
回复
3,612
积分
1万
注册
2011-07-07
1 楼

“nHZ !HS IN”就知道你猜不出,看不懂,还看不出来?你懂拼音吗?你笨也有个限度吧!把手机倒过来看看

登录后可以回复这个帖子。旧账号可使用原密码登录。

登录 注册新号
← 返回版块