macOS中的信号设置函数是宏,为什么?

jyztefdp  于 2022-12-22  发布在  Mac
关注(0)|答案(1)|浏览(155)

我发现信号集操作函数在macOS中被定义为宏:那么,例如,sigemptyset总是会导致01,而standard表示它可以在失败时返回-1
我可以通过undef调用sigemptyset函数,但是为什么它是Mac中的样子呢?这只是其中一个 quarkus ,还是sigemptyset在Mac上永远不会失败?

jexiocij

jexiocij1#

提供一个函数同时作为宏和真函数是允许的,甚至是鼓励的做法(例如,一个宏可以扩展为高效的内联汇编)。
1.任何在头文件中声明的函数也可以实现为头文件中定义的宏,所以如果函数的头文件包含在内,就不应该显式声明。[...]
POSIX.1-2017 Vol. 2 §2.1.1 Use and Implementation of Functions
对于sigemptyset的返回值,standard defines no specific errors表示该函数不需要检测任何错误。(您以名称sigemptyset链接到它)has a specified error,但它是一个可选的“可能失败”而不是强制的“应失败”错误检测。OS X,正如您在其文档中看到的,根本检测不到错误。

相关问题