我发现信号集操作函数在macOS中被定义为宏:那么,例如,sigemptyset总是会导致0或1,而standard表示它可以在失败时返回-1。我可以通过undef调用sigemptyset函数,但是为什么它是Mac中的样子呢?这只是其中一个 quarkus ,还是sigemptyset在Mac上永远不会失败?
sigemptyset
0
1
-1
undef
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,正如您在其文档中看到的,根本检测不到错误。
1条答案
按热度按时间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,正如您在其文档中看到的,根本检测不到错误。