5.5.2特殊功能检查

这些宏检查特定C函数是否存在,以及在某些情况下,当给出某些参数时,他们会如何反应。

宏:AC_FUNC_ALLOCA公司

检查阿洛卡牌手表功能。定义拥有_全部_如果阿洛卡。小时定义工作阿洛卡牌手表。如果没有,请查找内置替代方案。如果任一方法成功,请定义HAVE_ALLOCA公司否则,设置输出变量ALLOCA公司${LIBOBJDIR}分配'并定义C_ALLOCA公司(因此程序可以定期调用“分配(0)'至垃圾收集)。此变量与库对象所以多个程序可以共享ALLOCA公司无需创建一个实际的库,以防其中只有一些人使用中的代码库对象.“${LIBOBJDIR}'前缀的作用相同目的,如库对象(请参见AC_LIBOBJ公司与。库对象).

使用的源文件阿洛卡牌手表应该从一段代码开始像下面这样,正确地声明它。

#包括<stdlib.h>#包括<stddef.h>#如果定义为HAVE_ALLOCA_H#包括<alloca.h>#埃利夫!定义的alloca#如果定义__GNUC__#定义alloca __builtin_alloca#elif定义的_MSC_VER#包括<malloc.h>#定义alloca_alloca#埃利夫!定义的HAVE_ALLOCA#如果定义__cplusplus外部“C”#结尾void*分配(size_t);#结尾#结尾

如果您不想在包中手动维护这段代码,您可以使用Gnulib模块alloca-opt阿洛卡牌手表.请参见格努利布.

宏:AC_FUNC_CHOWN公司

如果大杂烩功能可用且有效(尤其是应该接受-1对于液体gid公司),定义HAVE_CHOWN公司。此宏的结果缓存在ac_cv_func_chown_works公司变量。

如果你想要一个变通方法,那就是大杂烩功能,即可用且有效,您可以使用Gnulib模块大杂烩.请参见格努利布.

宏:AC_FUNC_CLOSEDIR_类

如果closedir(关闭目录)函数不返回有意义的值,定义关闭方向_ OID。否则,呼叫者应检查其错误指示器的返回值。

目前,此测试是通过运行测试程序来实现的。什么时候?交叉编译悲观假设closedir(关闭目录)不会返回一个有意义的值。

此宏的结果缓存在交流断路器关闭无效变量。

此宏已过时,因为closedir(关闭目录)返回有意义的值在当前系统上。新程序不需要使用此宏。

宏:AC_FUNC_错误_AT_LINE

如果错误_位置_行找不到函数,需要AC_LIBOBJ公司替换'错误”。

此宏的结果缓存在ac _ cv _ lib _ error _ at _ line公司变量。

这个AC_FUNC_错误_AT_LINE宏已过时。新程序应该使用Gnulib的错误模块。请参见格努利布.

宏:AC_FUNC_FN匹配

如果fnmatch公司函数符合Posix,定义HAVE_FNMATCH公司.

与其他特定的AC_FUNC公司宏,AC_FUNC_FN匹配不替换破损/缺失fnmatch公司。这是历史原因。请参见AC_更换_FNMATCH如下所示。

此宏的结果缓存在ac_cv_func_fnmatch_works公司变量。

此宏已过时。新程序应使用Gnulib的fnmatch-posix公司模块。请参见格努利布.

宏:AC_FUNC_FNMATCH_GNU公司

表现得像AC_更换_FNMATCH(代替)但也要测试是否fnmatch公司支持GNU扩展。检测通用实现错误,例如GNU C中的错误图书馆2.1。

此宏的结果缓存在ac_cv_func_fnmatch_gnu接口变量。

此宏已过时。新程序应该使用Gnulib的fnmatch菜单模块。请参见格努利布.

宏:AC_FUNC_工作

此宏检查vfork公司功能。如果工作找到,定义HAVE_工作_工作.此宏检查是否只是试图运行它的存根。

如果vfork.h文件找到,定义哈弗_VFORK_H.如果工作vfork公司找到,定义HAVE_工作_叉车。否则,定义vfork公司成为用于向后兼容的早期版本自动配置文件。此宏检查几个已知的实现中的错误vfork公司并认为系统没有有工作vfork公司如果它检测到其中任何一个。

由于此宏定义vfork公司仅用于向后兼容的早期版本自动频率鼓励你定义它您自己的新代码:

#如果定义为HAVE_WORKING_VFORK#定义vfork分叉#结尾

此宏的结果缓存在ac _ cv _ func _ works公司ac_cv_func_vfork工厂变量。为了覆盖测试,还需要设置交流断路器ac _ cv _ func _ v分叉变量。

宏:AC_FUNC_FSEEKO公司

如果费西科弗特罗功能可用,定义HAVE_FSEEKO公司.定义_大文件_源如有必要使原型可见。

配置使用的脚本AC_FUNC_FSEEKO公司通常也应该使用AC_SYS_档案以确保关闭(_t)可以代表所有支持的文件大小。请参见AC_SYS_档案.

Gnulib模块费西科调用AC_FUNC_FSEEKO公司还包含其他可移植性问题的解决方案费西科。请参阅格努利布.

宏:AC_FUNC_集团

执行由执行的所有检查访问类型设置组(请参见AC_TYPE_GETGROUPS(交流类型_获取组)).那么,如果获取组功能可用并且知道工作正常,定义HAVE_GETGROUPS公司.设置输出变量GETGROUPS_LIB公司到任何库需要获得该函数。

此宏依赖于具有已知严重错误的系统列表获取组。如果此列表错误识别了您的系统获取组作为buggy或非buggy,您可以通过以下方式覆盖它设置缓存变量ac_cv_func_getgroups_works在一个配置站点文件(请参见设置站点默认值)。请同时报告错误为.

Gnulib模块获取组为其他、,此函数的可移植性问题不太严重。

宏:AC_FUNC_GETLOADAVG公司

检查如何获得系统负载平均值。执行测试正确地说,这个宏需要文件获取平均负载。c(c); 因此,是确保设置AC_LIBOBJ公司正确替换目录(请参阅一般功能检查,AC_CONFIG_LIBOBJ_DIR公司).

如果系统具有获取平均负载函数,定义平均装载量(_G)、和设置获取LOADAVG_LIBS到任何库获取该函数所必需的。同时添加获取LOADAVG_LIBS伦敦银行同业拆借利率。否则,需要AC_LIBOBJ公司替换获取平均负载'并可能定义其他几个C预处理器宏和输出变量:

  1. 定义C_GETLOADAVG公司.
  2. 定义服务器4,DGUX公司,UMAX公司,或UMAX4_3型如果启用这些系统。
  3. 如果列表。小时找到,定义夏令营_NLIST_H.
  4. 如果'结构列表'具有'n_un.n_name(名称)'成员,定义HAVE_STRUCT_NLIST_N_UN_NAME公司.过时的符号NLIST_NAME_名称仍然定义,但不依赖于它。
  5. 可能需要为安装程序的set-group-ID(或set-user-ID)获取平均负载工作。在这种情况下,定义获取加载VG_特权,设置输出变量需求_时间标识到'真的'(以及其他''),并设置KMEM_组应拥有已安装的程序。

这个AC_FUNC_GETLOADAVG公司宏已过时。新程序应使用Gnulib的获取平均负载模块。请参见格努利布.

宏:AC_FUNC_GETMNTENT公司

检查获得满足感在标准C库中,然后在太阳,序列、和消息图书馆,用于UNICOS,IRIX 4、PTX和UnixWare。那么,如果获得可用,定义HAVE_GETMNTENT公司并设置ac _ cv _ func _获取内容。否则设置ac _ cv _ func _获取内容.

可以通过设置缓存变量覆盖此宏的结果ac_cv搜索获取内容.

这个AC_FUNC_GETMNTENT公司宏已过时。新程序应使用Gnulib的装载列表模块。请参见格努利布.

宏:AC_FUNC_GETPGRP公司

定义GETPGRP_发票如果向传递0是错误的获取pgrp; 这是Posix行为。在旧BSD上系统,必须将0传递给获取pgrp,因为它需要一个论点和行为与Posix类似获取pgid.

#如果定义GETPGRP_VOIDpid=getpgrp();#其他pid=getpgrp(0);#结尾

此宏不检查是否获取pgrp根本不存在;如果你需要在这种情况下工作,第一次呼叫AC_检查_FUNC对于获取pgrp.

此宏的结果缓存在ac_cv取消获取pgrp无效变量。

此宏已过时,因为当前系统具有获取pgrp其签名与Posix一致。新程序不需要使用此宏。

如果链接是一个符号链接,那么lstat卫星应该治疗链接/一样链接/。然而,许多老年人lstat卫星实现错误地忽略了尾部斜杠。

可以安全地假设,如果lstat卫星错误地忽略尾部斜杠,然后是其他符号链接软件功能,如取消链接也错误地忽略了尾部斜杠。

如果lstat卫星行为正常,定义LSTAT_FOLLOWS_SLASHED_SYMLINK系统,否则需要AC_LIBOBJ公司替换lstat卫星.

此宏的结果缓存在ac _ cv _ func _ lstat _ references _斜线_符号链接变量。

这个AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK(AC_FUNT_LSTAT_FLOLLOWS_SLASSHED_SYMLLINK)宏已经过时了。新程序应使用Gnulib的lstat卫星模块。请参见格努利布.

宏:AC_FUNC_MALLOC语言

如果malloc公司功能与GNU C兼容图书馆malloc公司(即,'malloc(0)'返回有效的指针),定义HAVE_MALLOC公司至1。否则定义HAVE_MALLOC公司到0,请求AC_LIBOBJ公司替换malloc公司',并定义malloc公司rpl_malloc程序因此本地的malloc公司未在主项目中使用。

通常,替换文件马洛克。c(c)应该看起来像(注'#undef malloc公司’):

#包括<config.h>#undef malloc公司#包括<stdlib.h>/*从堆中分配一个N字节的内存块。如果N为零,则分配一个1字节的块*/空隙*rpl_malloc(大小为n){如果(n==0)n=1;返回malloc(n);}

此宏的结果缓存在ac_cv_func_malloc_0_nonnull公司变量。

如果您不想保持马洛克。c(c)包中的文件您可以手动使用Gnulib模块马洛克格努.

宏:AC_FUNC_MBRTOWC公司

定义HAVE_MBRTOWC公司如果函数为1mbrtowc公司类型mb状态_正确申报。

此宏的结果缓存在ac_cv_func_mbrtowc公司变量。

Gnulib模块mbrtowc公司不仅确保了函数已声明,但也围绕其他可移植性工作此函数的问题。

宏:AC_FUNC_MEMCMP系统

如果memcmp公司功能不可用或不工作,需要AC_LIBOBJ公司替换为'memcmp公司”。

此宏的结果缓存在ac_cv_func_memcmp_工作变量。

此宏已过时,因为当前系统有一个工作memcmp公司。新程序不需要使用此宏。

宏:AC_FUNC_MK时间

如果mktime时间功能不可用或不工作正确地,需要AC_LIBOBJ公司替换为'mktime时间”。在本试验中,mktime时间应符合Posix标准,应与当地时间.

此宏的结果缓存在ac _ cv _ func _工作_ mktime变量。

这个AC_FUNC_MK时间宏已过时。新程序应使用Gnulib的mktime时间模块。请参见格努利布.

宏:AC_FUNC地图

如果甲基丙烯酸甲酯函数存在并正确工作,定义HAVE_MMAP公司。此操作仅检查已映射的私有固定映射内存。

此宏的结果缓存在ac _ cv _ func _ map _ fixed映射变量。

注意:此宏的要求超出了一般程序的要求甲基丙烯酸甲酯特别是地图_固定在上失败HP-UX 11,而甲基丙烯酸甲酯否则在这个平台上工作正常。

宏:AC_FUNC_OBSTACK系统

如果找到obstack,请定义HAVE_OBSTACK公司,否则需要AC_LIBOBJ公司替换为'阻塞”。

此宏的结果缓存在ac_cv_func_obstack(ac_cv_func_obstack)变量。

这个AC_FUNC_OBSTACK系统宏已过时。新程序应使用格努利布的阻塞模块。请参见格努利布.

宏:AC_FUNC_REALLOC公司

如果重新分配功能与GNU C兼容图书馆重新分配(即,'重新分配(NULL,0)'返回有效指针),定义HAVE_REALLOC公司至1。否则定义HAVE_REALLOC公司到0,请求AC_LIBOBJ公司替换'重新分配',并定义重新分配rpl重新分配以便本地人重新分配未在主项目中使用。请参见AC_FUNC_分配了解详细信息。

此宏的结果缓存在ac_cv_func_realloc_0_nonnull(交流_取消_分配_未满)变量。

如果您不想保持重新分配。c(c)包中的文件您可以手动使用Gnulib模块realloc-gnu公司.

宏:AC_FUNC_选择_ RGTYPES

确定要为每个选择函数的参数,并定义这些类型在里面选择类型_ARG1,选择类型_ARG234、和选择_类型_ARG5分别是。选择类型_ARG1默认值到'整数’,选择类型_ARG234默认为'整数*’,选择_类型_ARG5默认为'结构时间值*”。

此宏已过时,因为当前系统具有选择谁的签名符合Posix。新程序不需要使用此宏。

宏:AC_FUNC_SETPGRP公司

如果设置pgrp不接受参数(Posix版本),定义设置RP_VOID。否则,它是BSD版本,需要两个进程ID作为参数。此宏不检查是否setpgrp公司根本不存在;如果你需要在这种情况下工作,第一次呼叫AC_检查_FUNC对于设置pgrp。此宏也不检查的Solaris变体设置pgrp,返回pid _ t而不是整数; 可移植代码只能使用通过比较返回值-1检查错误。

此宏的结果缓存在ac_cv_func_setpgrp_void(ac_cv_func_setpgrp_void)变量。

此宏已过时,因为所有形式的设置pgrp也是过时的。新程序应使用Posix函数设置ID,它接受两个进程ID作为参数(如BSD设置pgrp).

宏:AC_FUNC_状态
宏:AC_FUNC_LSTAT系统

确定是否斯达lstat卫星有这个错误当指定零长度的文件名作为参数时成功。

如果是,则定义HAVE_STAT_EMPTY_STRING_BUG公司(或哈弗_LSTAT_EMPTY_STRING_BUG)并要求AC_LIBOBJ公司更换。

这些宏的结果缓存在ac_cv_func_stat_empty_string插件ac_cv_filc_lstat_empty_string_bug变量。

这些宏已过时,因为当前没有任何系统有此缺陷。新程序不需要使用这些宏。

宏:AC_FUNC_STRCOLL公司

如果斯特科尔功能存在且工作正常,定义HAVE_STRCOLL公司。这比AC_CHECK_FUNCS(字符串)',因为某些系统不正确的定义斯特科尔不应该使用。但确实如此不检查Solaris 10上此函数的已知错误。

此宏的结果缓存在ac _ cv _ func _ strcoll _ works公司变量。

宏:AC_FUNC_STRERROR_R公司

如果strerror或r可用,定义夏令营_R,如果它被声明、定义HAVE_DECL_STRERROR_R。如果返回字符*消息,定义街道_R_CHAR_P; 否则它返回一个整数错误编号。的“线程安全函数”选项Posix需要strerror或r返回整数,但是许多系统(例如,包括GNU C的2.2.4版库)返回字符*不一定等于的值缓冲区参数。

此宏的结果缓存在ac _ cv _ func _ strerror _ r _ char _ p变量。

Gnulib模块strerror_r错误不仅确保了功能具有Posix指定的返回类型,但也可以围绕其他此功能的可移植性问题。

宏:AC_FUNC_STRF时间

检查斯特夫提时间在中国际库,用于SCO Unix。那么,如果斯特夫提时间可用,定义HAVE_STRFTIME(夏令时).

此宏已过时,因为当前没有系统需要国际的库斯特夫提时间。新程序不需要使用此宏。

宏:AC_FUNC_STRTOD公司

如果字符串转换为浮点数功能不存在或工作不正常,要求AC_LIBOBJ公司替换'字符串转换为浮点数’. 在这种情况下,因为斯特托德。c(c)可能需要“功率',设置输出变量POW_LIB(磅)到所需的额外库。

此宏将其结果缓存在ac _ cv _ func _ strtod公司变量并取决于ac_cv打开变量。

这个AC_FUNC_STRTOD公司宏已过时。新程序应使用Gnulib的字符串转换为浮点数模块。请参见格努利布.

宏:AC_FUNC_STRTOLD公司

如果斯特特尔函数存在并符合C99或更高版本,定义HAVE_STRTOLD公司.

此宏将其结果缓存在ac_cv取消trtell变量。

Gnulib模块斯特特尔不仅确保了函数存在,但也围绕其他可移植性工作此函数的问题。

宏:AC_FUNC_STRNLEN公司

如果斯特伦函数不可用,或存在bug(与来自AIX 4.3),需要AC_LIBOBJ公司替换它。

此宏将其结果缓存在ac_cv_func_strnlen_工作变量。

这个AC_FUNC_STRNLEN公司宏已过时。新程序应使用Gnulib的斯特伦模块。请参见格努利布.

宏:AC_FUNC_UTIME_空

如果'美国(文件,空)'台文件的时间戳到现在,定义HAVE_UTIME_NULL公司.

此宏将其结果缓存在ac _ cv _ func _ utime _ null公司变量。

此宏已过时,因为所有当前系统都有美国就是这样。新程序不需要使用此宏。

宏:AC_FUNC打印

如果vprintf(打印)找到,定义HAVE_VPRINTF公司。否则,如果_掺杂找到,定义HAVE_DOPRNT公司.(如果vprintf(打印)可用,您可以假设vfprintf打印vsprintf公司也可以使用。)

这个宏是过时的,因为所有当前的系统都有vprintf(打印).新程序不需要使用此宏。

宏:AC_更换_FNMATCH

如果fnmatch公司函数不符合Posix(请参阅AC_FUNC_FN匹配),要求它AC_LIBOBJ公司更换。

文件fnmatch。c(c),fnmatch_loop。c(c)、和fnmatch_。小时在中AC_LIBOBJ公司替换目录假定包含GNU源代码的副本fnmatch公司.如有必要,此源代码编译为AC_LIBOBJ公司更换,以及fnmatch_。小时文件链接到fnmatch。小时这样就可以包含在系统的替代位置<fnmatch.h>.

此宏将其结果缓存在ac_cv_func_fnmatch_works公司变量。

此宏已过时,因为它假定使用特定的源文件夹。新程序应使用Gnulib的fnmatch-posix公司模块,它提供了此宏和源文件。请参见格努利布.