为什么某些POSIX系统调用返回整数而不是布尔值?

时间:2018-12-13 09:04:31

标签: integer boolean posix semantics

POSIX.1-2017 规范的最新版本中,某些系统调用(例如link()/unlink()access()chmod()返回0(成功) )或-1(不成功)。

在那种情况下,返回布尔值的语义是否更正确?

如果我将返回类型从int更改为boolean,它是否仍然符合POSIX

1 个答案:

答案 0 :(得分:0)

我认为在所有返回整数值的函数中都具有类似的返回类型。否则,程序员应每次检查该函数是否返回intboolean

bool最初甚至不是C语言中的类型:我不知道它也是逆向兼容性的选择。

在某些情况下,您甚至别无选择:以以下示例为例:

  

int fflush(FILE *fp)返回:0,如果正常,EOF出现错误

     

int fclose(FILE *fp);返回:0,如果正常,EOF出现错误

     

int atexit(void (*func)(void))返回:如果可以,返回0,错误时返回非零

EOF是通常定义为-1的宏,但不能保证。在某些其他情况下,您想指定错误