在 POSIX.1-2017 规范的最新版本中,某些系统调用(例如link()/unlink()
,access()
或chmod()
返回0(成功) )或-1(不成功)。
在那种情况下,返回布尔值的语义是否更正确?
如果我将返回类型从int
更改为boolean
,它是否仍然符合POSIX ?
答案 0 :(得分:0)
我认为在所有返回整数值的函数中都具有类似的返回类型。否则,程序员应每次检查该函数是否返回int
或boolean
。
bool
最初甚至不是C语言中的类型:我不知道它也是逆向兼容性的选择。
在某些情况下,您甚至别无选择:以以下示例为例:
int fflush(FILE *fp)
返回:0,如果正常,EOF出现错误
int fclose(FILE *fp);
返回:0,如果正常,EOF出现错误
int atexit(void (*func)(void))
返回:如果可以,返回0,错误时返回非零
EOF
是通常定义为-1
的宏,但不能保证。在某些其他情况下,您想指定错误