【发布时间】:2017-05-05 11:48:04
【问题描述】:
我尝试编写在两个 POSIX 兼容操作系统(即 QNX 和 Linux 变体)之间共享的 POSIX 兼容代码。
我刚刚发现函数返回值的规范存在细微差异,例如pthread_mutex_trylock()。一个文档说它返回EOK(计算结果为0),另一个文档说它返回纯0,以防成功。
我假设我可以安全地检查返回值 == 0 或 != 0 并避免使用 QNX EOK 宏。
我的问题:
- POSIX 是否明确定义了函数必须在成功和/或错误的情况下返回哪些值?
- 严格来说,是一个指定返回
EOK(不是0)POSIX 兼容的函数吗? -
EOK是某个标准的一部分吗?
【问题讨论】:
-
这个问题纯属学术性的。首先,Posix 是关于源代码兼容性的,而不是关于二进制兼容性的。
EOK不是由 posix 指定的,并且提到的函数需要在成功时返回0,所以在这里使用常量 0 是安全的。我不知道包含EOK的标准。 -
@Ctx:嗯,源代码兼容性正是这里的问题。 EOK 似乎打破了这种兼容性(不必要地)。无论如何,既然你的评论回答了我的问题,为什么不把它作为一个实际的答案呢?
标签: c posix return-value standards-compliance