网络字节序和本地字节序转换函数的原型在哪个目录
请问下Linux下网络字节序和本地字节序转换函数在Linux系统的哪个目录啊,怎么找到实现的代码uint32_t htonl(uint32_t hostint32);uint16_t htons(uint16_t hostint16);uint32_t ntohl(uint32_t netint32);uint16_t ntohs(uint16_t netint16);也就是以上四个函数的实现代码
回复 1# 进无止进
Those are implemented in Glibc:
https://sourceware.org/git/?p=gl ... net/htonl.c;hb=HEAD
https://sourceware.org/git/?p=gl ... net/htons.c;hb=HEAD
回复 2# MMMIX
谢谢,但我还有点不明白,当从网络字节序向本地字节序转换的时候,它怎么判断CPU的大小端模式呢?我知道操作系统自身已经定义了大下端模式,但CPU的大小端模式是怎么确定的呢?
回复 3# 进无止进
在代码的编译(预处理)阶段就已经可以确定了。代码的大小端要和CPU的大小端匹配,要不然也没办法跑。 回复 2# MMMIX
找了好久,没有看到下面这两个函数的实现
uint32_t ntohl(uint32_t netint32);uint16_t ntohs(uint16_t netint16);
那个weak_alias的作用是说这两对函数的实现原理一样吗?
回复 5# 进无止进
那个weak_alias的作用是说这两对函数的实现原理一样吗?
weak_alias (htonl, ntohl)
的作用是说,如果你没有额外提供 ntohl 的实现,那么 ntohl 就是 htonl。
回复 6# MMMIX
哦,那这里我可以认为 ntohl和htonl实现是一样的?我没找到htonl的实现
回复 7# 进无止进
那这里我可以认为 ntohl和htonl实现是一样的?
Yes.
页:
[1]