C语言 inet_pton和inet_ntop UNIX函数真的可以依赖于语言环境吗?

ca1c2owp  于 2023-04-29  发布在  Unix
关注(0)|答案(1)|浏览(125)

在 www.example.com 我曾指出,inet_ptoninet_ntop UNIX函数可以依赖于区域设置,正如它们所描述的那样。
然而,这些函数的输出格式定义得很好,所以我的问题是,它们真的依赖于语言环境吗?有人能告诉我一个配置/库,它们有非标准格式吗?

b91juud3

b91juud31#

您链接的威胁对MT-Safe locale的解释不正确。这是关于安全类型,而不是关于地点/文化等。
但也有可能两个函数都依赖于 locale:如果我没记错的话,关于charset的唯一条件是\0/是固定的(C要求数字09使用连续的编码值)。每个地区都可以定义自己的字符集。在任何情况下,我认为大多数程序只是假设ASCII(或ASCII的子集)。但这种情况非常罕见,我不确定是否正确解释了LC_TYPE。也许POSIX中对字符集有更强的假设。
你可以让这两个功能都可以移植。不可移植的方式只是一种捷径:如果你知道长的结构和每个字节的IP(如在IP包),你可以有一个优化的版本。但是,由于许多年(几十年)编译器也将优化可移植代码。

相关问题