好的。然后,我撤回异议。
不过,这是一个好点。 能够使用更高层次的"stream"所有类型的描述符上的接口都很重要。
另一个重要情况是全双工I / O。 我们需要使它变得简单,因为在Linux和BSD中有这么多文件描述符类型的接口是全双工的。
我确实有一些关于实现此方法的想法(基于过去的经验),但是有几种实现方法。
很多事情归结为至少暴露接收/读取缓冲区,以便用户可以检查是否已接收到特定的代码或序列,以及读取缓冲区中有多少数据,而不会消耗或丢弃已缓冲的数据。 Exactly
如何 最好做到这一点,对我来说是一个悬而未决的问题。
I'd想查看标准的哈希表/词典。
环境变量是每个进程都可以访问的词典的示例,对此我有一个想法。
你有接口的例子吗've found useful? 函数原型将提供一个很好的主意,并提供实际的用例示例。
比较例如使用qsort_r()而不是qsort()进行排序:比较操作通常需要外部信息,例如字符串中的偏移量或列以开始比较,并且将无类型的用户指针传递给比较函数使此操作在线程安全中变得容易一种方式,因为不需要使用全局变量。
字典对于大量的应用程序很有用。
I'我不确定界面。我认为理想情况下,您应该处理任意键和值,因此键和值应为"items",例如每个都是指向项目的指针'的数据和大小字段。我当然不限于"strings".
然后,将键值对添加到字典的函数将花费2"items" as parameters.
另一个从键返回值的函数例如将花费1"item"作为参数(键),并将返回值作为指向"item"。返回的NULL表示找不到匹配的键。
您还可以添加用于删除条目的功能(按键)。
创建字典的函数可以使用一个可选参数,该参数定义了我们是否需要动态调整大小的字典或固定的最大大小(条目数)。 (可选)它还可以允许使用静态分配的字典(例如,如果我们要避免动态分配的话)。
至于键搜索,对于键匹配不是严格意义上的整个键的二进制相等的情况,可以使用memcmp()(或等效方法)或使用可选的用户定义的比较函数来实现精确匹配's data.
我真的想要一组更好的字符串(文本)函数。 也许更有能力处理当前的unicode,但是……绝对更像其他语言的支持。
I'我不确定那是什么样子。 一种可能性是,字符串可以具有自己的垃圾回收内存管理,而无需从malloc / free切换其他内容。
而不是像uint32_t这样的东西
我发现这确实压抑了人们使用uint16_t的频率,而他们真正应该使用的是uint_fast16_t。 当然如果你没有'由于可读性或可打字性问题而喜欢uint16_t,您真的很讨厌uint_fast16_t :-(
我真的想要一组更好的字符串(文本)函数。 也许更有能力处理当前的unicode,但是……绝对更像其他语言的支持。
有趣的是,当前Unicode限制代码点为0到0x10FFFF(包括1114114个唯一代码点),这意味着UTF-8代码点的长度为1、2或3个字节。 所有换行符约定均为一或两个字节长。 通常有趣的转义/结束序列长为两个或三个字节。 And so on.
在我看来,我们真正需要的是字符串函数,而不是单字符字节,它可以处理长度为1、2或3个字节的字符或字符序列。 这不仅涵盖UTF-8,还涵盖其他用例。 UTF-8序列在许多方面都更加容易,因为初始字节还描述了序列长度;这使得它们在遍历或实现正则表达式时相对容易地自动支持。
(I'我已经使用宽字符串和宽I / O进行了相当多的工作,虽然它们解决了单个字符问题,但它们不解决组合字形,换行符或转义序列。)
对于在有限大小的缓冲区中执行的操作,当决定性序列在缓冲区末尾被缩短时,函数需要能够返回情况,以便调用方知道调整/增大/移动缓冲区的情况。
(因此,等效于strnstr()应该能够返回
这里,
未找到, 或者
在缓冲区末尾切短)
但是,即使对于短序列来说,这也是最重要的-最多几个字符。相对而言,较长的字符串匹配是非常少见的操作。
使常见的操作高效是关键。 在那之后,罕见的操作只需要不傻即可。
I'我不确定那是什么样子。 一种可能性是,字符串可以具有自己的垃圾回收内存管理,而无需从malloc / free切换其他内容。
绝对是一个有趣的选择。 我也喜欢模块化的基本思想。
也许,应该将其拆分为一个核心库和可选的子库,而不是一个整体的基础库?
我发现这确实压抑了人们使用uint16_t的频率,而他们真正应该使用的是uint_fast16_t。 当然如果你没有'由于可读性或可打字性问题而喜欢uint16_t,您真的很讨厌uint_fast16_t :-(
那'这正是我考虑使用的原因
u16 为了
uint_fast16_t 和
u16e 为了
uint16_t.
最小大小的快速类型应该是最常用的类型,那么为什么不使它们成为最容易使用的类型呢? 然后,可以将精确大小的类型视为更严格的类型变体(在逻辑上;在计算上完全独立的类型),因此后缀表示"exactly"对我来说似乎合乎逻辑。