测试x_np pthread函数的可用性 - C / C ++

时间:2016-03-19 01:21:04

标签: c++ c pthreads portability

我正在基于pthread API为C语言编写一个帮助程序库。有许多pthread函数是非标准GNU扩展,例如pthread_set_affinity_nppthread_clear_exit_nppthread_set_qos_class_self_np等。

有没有办法可以使用宏来测试这些非便携式功能是否可用,而无需查找哪些操作系统定义了什么?

1 个答案:

答案 0 :(得分:1)

这正是人们使用Autoconf解决的问题。例如,configure.ac文件中有这样的错误:

AC_CHECK_DECLS(
  [pthread_attr_setaffinity_np, pthread_clear_exit_np, pthread_set_qos_class_self_np],
  [], [], [[#include <pthread.h>]])
如果声明不存在,

将定义宏HAVE_DECL_PTHREAD_ATTR_SETAFFINITY_NPHAVE_DECL_PTHREAD_CLEAR_EXIT_NPHAVE_DECL_PTHREAD_SET_QOS_CLASS_SELF_NP,定义为0,如果声明不存在,则定义为1