在没有文本解析的情况下初始化in_addr_t

时间:2012-08-10 21:04:34

标签: c unix

所以基本上我想用一个特定的地址初始化一个in_addr_t,从文本中解析它是没有意义的。这样做很有诱惑力:

in_addr_t foo = network_byte_order(127 << 24 | 0 << 16 | 0 << 8 | 99 << 0};

对于127.0.0.99,然后将其包装在一个宏中,以便它可以方便地用于任何地址...但是我想首先检查是否有人知道任何现有的宏,最好是“官方”?

1 个答案:

答案 0 :(得分:1)

此处没有现有的宏。看看INADDR_LOOPBACK中如何定义netinet/in.h的示例。它只是一个十六进制常量,比你的更简单:

# define INADDR_LOOPBACK        ((in_addr_t) 0x7f000001) /* Inet 127.0.0.1.  */

所以你的方法很好。

您应该使用标准htonl()代替network_byte_order功能。