测试 x_np pthread 函数的可用性 - C/C++
Test Availability of x_np pthread Functions - C/C++
我正在编写一个基于 pthread API 的 C 线程辅助库。有许多非标准 GNU 扩展的 pthread 函数,例如 pthread_set_affinity_np
、pthread_clear_exit_np
、pthread_set_qos_class_self_np
等
有没有什么方法可以使用宏来测试这些不可移植的功能是否可用,而无需查找哪些操作系统定义了什么?
这正是人们使用 Autoconf 解决的问题。例如,在您的 configure.ac
文件中有这样一个 sinppet:
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_NP
、HAVE_DECL_PTHREAD_CLEAR_EXIT_NP
和 HAVE_DECL_PTHREAD_SET_QOS_CLASS_SELF_NP
,如果声明不存在则定义为 0
,如果声明存在则定义为 1
。
我正在编写一个基于 pthread API 的 C 线程辅助库。有许多非标准 GNU 扩展的 pthread 函数,例如 pthread_set_affinity_np
、pthread_clear_exit_np
、pthread_set_qos_class_self_np
等
有没有什么方法可以使用宏来测试这些不可移植的功能是否可用,而无需查找哪些操作系统定义了什么?
这正是人们使用 Autoconf 解决的问题。例如,在您的 configure.ac
文件中有这样一个 sinppet:
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_NP
、HAVE_DECL_PTHREAD_CLEAR_EXIT_NP
和 HAVE_DECL_PTHREAD_SET_QOS_CLASS_SELF_NP
,如果声明不存在则定义为 0
,如果声明存在则定义为 1
。