我用C ++编写了一个使用Ubuntu下的timer_settime
函数的程序,然后让我的朋友尝试在Mac OS X下编译它。timer_settime
的手册页说这个函数符合POSIX.1-2001,但在OS X(声称符合POSIX)下,g ++会产生编译错误。网络搜索显示OS X API中没有此功能。
这是否意味着OS X不完全符合POSIX,或者我是否误解了POSIX兼容性意味着什么?
编辑:我查看了POSIX draft并在第2063页的系统界面的字母顺序列表中找到了这个函数,紧挨着标准C函数(例如printf
),因此它看起来不像对我来说,timer_settime
是标准的某种延伸。
答案 0 :(得分:5)
事实证明,正如Ken Thomases建议的那样,timer_settime
等高级计时器功能确实是POSIX实时扩展的一部分。引用此功能的文档的更改历史记录:
第6期
timer_getoverrun(),timer_gettime()和timer_settime()函数被标记为Timers选项的一部分。
第7期
timer_getoverrun(),timer_gettime()和timer_settime()函数从Timers选项移动到Base。
最新的POSIX标准POSIX.1-2008第7期最近于2013年发布。我朋友的计算机运行的OS X 10.9也于2013年底发布,因此我认为它确实如此。不符合最新标准。但是,2014年底发布的最新OS X v10.10" Yosemite"的维基百科says完全符合POSIX标准。
然而,毕竟,当某些功能被默默地标记为“扩展”时,我仍然不明白应该如何编写可移植代码。按标准,手册页没有提到这一重要事实。