Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
所以基本上我想用一个特定的地址初始化一个 in_addr_t 并从文本中解析它是没有意义的。这样做很诱人:
in_addr_t foo = network_byte_order(127 << 24 | 0 << 16 | 0 << 8 | 99 << 0};
对于 127.0.0.99,然后将其包装在一个宏中,以便它适用于任何地址......但是我想先检查是否有人知道任何现有的宏,最好是“官方”?
没有用于此的现有宏。看看这个例子是如何INADDR_LOOPBACK定义的netinet/in.h。它只是一个十六进制常量,比您的方法更简单:
INADDR_LOOPBACK
netinet/in.h
# define INADDR_LOOPBACK ((in_addr_t) 0x7f000001) /* Inet 127.0.0.1. */
所以你的方法很好。
您应该使用标准htonl()代替您的network_byte_order功能。
htonl()
network_byte_order