c - 初始化一个 in_addr_t 而不进行文本解析

标签 c unix

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

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

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

最佳答案

目前没有适用于此目的的宏。查看这个示例,了解如何在 netinet/in.h 中定义 INADDR_LOOPBACK。它只是一个十六进制常量,比您的方法更简单:

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

所以你的方法没问题。

您应该使用标准的 htonl() 代替 network_byte_order 函数。

关于c - 初始化一个 in_addr_t 而不进行文本解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11909224/

相关文章:

c - 坚持构建递归函数

c++ - win7编程垂直回溯

C BlackJack 编译但段错误

linux - Mac OS X 终端 - 我该如何 "clear | java foo"?

linux - 在 linux 中使用 verbose 启动 tomcat

c - C 中给定偏移量的结构的特定输出

c - gcc 使用 -o 而不是 -o3 构建?

bash - 将文件内容附加为 unix shell 命令的参数

regex - 如何修复以下 sed 命令?

bash - 在 shell 脚本中以编程方式检查失败的 scp 的最佳方法