为什么open / send / sendto / sendmsg中的flags参数是有符号整数而不是无符号整数?

时间:2015-07-23 09:48:30

标签: c linux posix

正如您在联机帮助页中看到的那样:

   ssize_t send(int sockfd, const void *buf, size_t len, int flags);

   ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
                  const struct sockaddr *dest_addr, socklen_t addrlen);

   ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags);

1 个答案:

答案 0 :(得分:1)

因为没有理由从flags中添加/减去标志,也没有理由将其转换为任何其他类型,并且对flags执行的唯一操作是按位运算符来设置标志位或测试一个或多个位是否有已设置,没有理由将其定义为已签名或未签名。两者都没问题。