【发布时间】:2015-02-12 22:53:44
【问题描述】:
我用C++写了一个程序,在Ubuntu下使用timer_settime函数,然后让朋友尝试在Mac OS X下编译。timer_settime的man page说这个函数符合POSIX .1-2001,但在 OS X(据称符合 POSIX)下,g++ 给出了编译错误。网络搜索显示 OS X API 中没有此功能。
这是否意味着 OS X 不完全符合 POSIX,还是我误解了 POSIX 合规性的含义?
编辑:我查看了POSIX draft,并在第 2063 页的系统接口字母列表中找到了这个函数,就在标准 C 函数(如 printf)旁边,因此在我看来,@ 987654326@ 是标准的某种扩展。
【问题讨论】:
-
在我看来
timer_settime()是可选 POSIX 扩展的一部分。操作系统完全有可能与 POSIX 兼容但不实现该扩展。 -
这里引用了 R. Love 在“Linux 系统编程”中关于
timer_settime和相关功能的部分:“POSIX 时钟系列的定时器接口无疑是最先进的,但也是最新的 ( ergo 是最不便携的)和最复杂的使用。如果简单或便携是主要动机,setitimer() 很可能是更好的选择。据我所知,没有任何关于扩展的说法,但界面被认为是“新的”。 -
2 @Ken 顺便说一句,我有点奇怪,旨在使程序可移植到所有兼容系统的标准可以定义可选扩展。您能否提供一个链接,让我可以阅读有关 POSIX 扩展的信息?
-
我没有任何确定的东西。这是我发现的一个讨论:eetimes.com/document.asp?doc_id=1200444
-
您遇到什么错误? POSIX 不谈论 C++。请使用 C 编译器进行编译,而不是 C++ 编译器。