【发布时间】:2018-12-13 09:04:30
【问题描述】:
在 POSIX.1-2017 规范的最新版本中,一些系统调用,如 link()/unlink()、access() 或 chmod() 返回 0(成功)或 -1(不成功) )。
在这种情况下,返回 boolean 在语义上不是更正确吗?
如果我将返回类型从int 更改为boolean,它是否仍然POSIX 兼容?
【问题讨论】:
标签: integer boolean posix semantics
在 POSIX.1-2017 规范的最新版本中,一些系统调用,如 link()/unlink()、access() 或 chmod() 返回 0(成功)或 -1(不成功) )。
在这种情况下,返回 boolean 在语义上不是更正确吗?
如果我将返回类型从int 更改为boolean,它是否仍然POSIX 兼容?
【问题讨论】:
标签: integer boolean posix semantics
我认为在所有返回整数值的函数中都有相似的返回类型。否则程序员应该每次检查该函数是否返回int 或boolean。
最初bool 甚至不是 C 中的类型:我不知道它也是复古兼容性的选择。
在某些情况下,您甚至没有选择:以以下为例:
int fflush(FILE *fp)返回:0 表示 OK,EOF 表示错误
int fclose(FILE *fp);返回:0 表示正常,EOF 表示错误
int atexit(void (*func)(void))返回:0 表示正常,非零表示错误
EOF 是一个宏,一般定义为-1,但不能保证。在其他一些情况下,您希望指定错误
【讨论】:
bool 不是该语言的早期部分,这让我感到非常惊讶,它的存在似乎很自然。