5.6.3通用标题检查

这些宏用于查找“特定”测试宏。如果需要检查标题的内容除了找出它是否存在外,你还必须自己写测试它(参见编写测试).

宏:AC_检查_头 (头文件,[已找到操作if],[如果未找到操作],[包括])

如果系统头文件头文件可编译,执行shell命令已找到操作if,否则执行非基金行动。如果您只想定义一个符号头文件可用,请考虑使用AC_检查_头而不是。

包括应该是适当的先决条件代码,即。上面可能需要显示的任何内容#包括<头文件>'编译时不会出错。这可以是任何东西,但通常是额外的”#包括指令。如果包括省略或为空,配置使用宏的内容AC_INCLUDES_DEFAULT公司.请参阅默认包括.

此宏用于仅检查存在页眉,而不是编译器是否接受其内容。一些老年人配置脚本依赖于此行为,因此它仍然是通过指定“-'作为包括。此机制是自Autoconf 2.70起已弃用;只有预处理器的情况需要检查时应使用AC_PREPROC_IFELSE公司.请参阅运行预处理器.

此宏将其结果缓存在ac_cv标头_头文件变量,其中的字符不适合映射到的变量名下划线。

宏:AC_检查_头 (头文件…,[已找到操作if],[非基金行动],[包括])

对于每个给定的系统头文件头文件在中空白分隔的参数列表,定义有_头文件(大写)。如果已找到操作if如果给定,则当其中一个标头找到个文件。你可以给它一个值'打破“突破第一场比赛的循环。如果非基金行动被给予,它未找到其中一个头文件时执行。

包括解释为AC_检查_头,为了选择头之前提供的预处理器指令集测试中。

此宏将其结果缓存在ac_cv标头_头文件变量,其中的字符不适合映射到的变量名下划线。

宏:AC_CHECK_HEADERS_ONCE公司 (头文件…)

对于每个给定的系统头文件头文件在中存在的空白分隔参数列表,定义有_头文件(大写)。

如果您不需要AC_检查_头,这个变体生成更小、更快配置文件夹。全部标题传递给AC_CHECK_HEADERS_ONCE公司一次检查通行证,在配置运行。支票不能条件化,则不能指定已找到操作if非基金行动、和AC_INCLUDES_DEFAULT公司始终使用先决条件。

在Autoconf的早期版本中,这些宏仅检查头已被预处理器接受。此更改是因为旧测试不适合于典型用途。标题通常是用于编译,而不仅仅是预处理,以及旧的行为有时接受在编译时发生冲突的头(请参见页眉存在但无法编译). 如果出于某种原因不适合检查标题是否可编译,应该使用AC_PREPROC_IFELSE公司(请参见运行预处理器)而不是这些宏。

需要编译每个标头可以提高测试的健壮性,但它还要求您确保包括对的。现在大多数系统标头都确保#包括无论他们需要什么,或者通过以下方式满足他们的依赖性AC_INCLUDES_DEFAULT公司(请参见默认包括),但是看见收割台的便携性,对于已知的例外情况。一般来说,如果您正在寻找巴。小时,这需要福。小时首先包括(如果存在),您应该这样做:

AC_CHECK_HEADERS([foo.h])AC_CHECK_HEADERS([巴.h],[],[】,[#ifdef HAVE_FOO_H#包括<foo.h>#结束语])