所以基本上我想用一个特定的地址初始化一个in_addr_t,从文本中解析它是没有意义的。这样做很有诱惑力:
in_addr_t foo = network_byte_order(127 << 24 | 0 << 16 | 0 << 8 | 99 << 0};
对于127.0.0.99,然后将其包装在一个宏中,以便它可以方便地用于任何地址...但是我想首先检查是否有人知道任何现有的宏,最好是“官方”?
答案 0 :(得分:1)
此处没有现有的宏。看看INADDR_LOOPBACK
中如何定义netinet/in.h
的示例。它只是一个十六进制常量,比你的更简单:
# define INADDR_LOOPBACK ((in_addr_t) 0x7f000001) /* Inet 127.0.0.1. */
所以你的方法很好。
您应该使用标准htonl()
代替network_byte_order
功能。