为什么某些 POSIX 系统调用 return 整数而不是布尔值?
Why do certain POSIX system calls return an integer instead of a boolean?
在 POSIX.1-2017 规范的最新版本中,某些系统调用,如 link()/unlink()
、access()
或 chmod()
return 0(成功)或 -1(不成功)。
在那种情况下,return a boolean 在语义上不是更正确吗?
如果我将 return 类型从 int
更改为 boolean
,它仍然是 POSIX-compliant 吗?
我认为在所有 return 整数值函数中具有相似的 return 类型已经完成。否则程序员应该每次检查该函数是 returning 一个 int
还是一个 boolean
.
最初 bool
甚至不是 C 中的类型:我不知道它也是一种向后兼容的选择。
在某些情况下,您甚至没有选择:以以下示例为例:
int fflush(FILE *fp)
Returns: 0 if OK, EOF on error
int fclose(FILE *fp);
Returns: 0 if OK, EOF on error
int atexit(void (*func)(void))
Returns: 0 if OK, nonzero on error
EOF
是一般定义为-1
的宏,但不保证。在其他一些情况下,您想指定错误
在 POSIX.1-2017 规范的最新版本中,某些系统调用,如 link()/unlink()
、access()
或 chmod()
return 0(成功)或 -1(不成功)。
在那种情况下,return a boolean 在语义上不是更正确吗?
如果我将 return 类型从 int
更改为 boolean
,它仍然是 POSIX-compliant 吗?
我认为在所有 return 整数值函数中具有相似的 return 类型已经完成。否则程序员应该每次检查该函数是 returning 一个 int
还是一个 boolean
.
最初 bool
甚至不是 C 中的类型:我不知道它也是一种向后兼容的选择。
在某些情况下,您甚至没有选择:以以下示例为例:
int fflush(FILE *fp)
Returns: 0 if OK, EOF on error
int fclose(FILE *fp);
Returns: 0 if OK, EOF on error
int atexit(void (*func)(void))
Returns: 0 if OK, nonzero on error
EOF
是一般定义为-1
的宏,但不保证。在其他一些情况下,您想指定错误