<sys/types.h>
在与类型相关的参考文献中blkcnt_t
定义为:
块cnt_t 用于文件块计数。
它还指出:
块cnt_t和 off_t 应为有符号整数类型。
(看http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html#tag_13_67)
我无法找到块数为负数的理由,因此我想知道为什么类型被定义为有符号?
虽然我无法想象使用具有消极的块数,我认为 blkcnt_t 可能会被分配一个消极的表示某种错误/异常情况的值?
有趣的事实是 blkcnt_t 类型是作为无符号引入的(请参阅这里),然后更改为签名(参见这里)。作为发生此更改的描述/理由,给出了此提交消息:
“blkcnt_t 和 off_t 应为有符号整数类型。”当网络更新操作的大小要求为负数时,这会导致 pacman 失败,而是计算出一个巨大的正数。
答案1
答案2
这可能只是为了向后兼容。在早期版本中没有blkcnt_t
类型,但字段只是long
。因此,当他们转向更灵活的规范时,他们可能希望保留该字段的符号性。