5.6.1收割台的便携性

本节记录了一些收集到的关于常见标题的知识,以及它们引起的问题。根据定义,此列表始终需要添加。Gnulib维护了一个更完整的列表项目(请参见格努利布),覆盖Posix标题在里面格努利布Glibc收割台在里面格努利布.请帮助我们保持尽可能完整的Gnulib列表。

当我们说一个标头“可能需要”一些其他标头集时,我们意味着您可能需要手动包含其他标头优先,否则测试中标头的内容将无法编译。检查这些标头时,必须提供中可能需要的标头包括的论点AC_检查_头AC_检查_头,否则支票将错误地失败。AC_INCLUDES_DEFAULT公司(请参见默认包括)安排包括一些常见要求,通常应在你的包括例如,净值/if.h可以要求系统/类型。小时,系统/插座。小时或两者兼而有之,以及AC_INCLUDES_DEFAULT公司把手系统/类型。小时但不是sys/socket。小时,所以您应该这样检查:

AC_CHECK_HEADERS([sys/socket.h])AC_CHECK_HEADERS([net/if.h],[],[],[AC_INCLUDES_DEFAULT(AC_输入/排除)[#如果定义为HAVE_SYS_SOCKET_H#包括<sys/socket.h>#结尾]])

注意,该示例混合了单引号(对于AC_INCLUDES_DEFAULT公司,以便展开)和双引号(以确保每个预处理器#被视为文字字符串而不是注释)。

限制。小时

在C99及更高版本中,限制。小时定义LLONG_MIN(最低),LLONG_MAX(最大值)、和ULLONG_最大,但许多几乎是C99环境(例如,默认GCC 4.0.2+glibc 2.4)不会定义它们。

内存。小时

此头文件已过时;使用字符串。小时而不是。

串。小时

在某些系统上,这是唯一声明strcasecmp公司,strncasemp公司、和ffs公司.

此标题可能包括,也可能不包括字符串。小时为你。然而,在所有最新的系统都可以安全地包括字符串。小时串。小时在同一源文件中,按任意顺序。

int类型。小时与。标准整数。小时

C99规定int类型。小时包括标准整数。小时,所以有无需包括标准整数。小时在标准环境中单独使用。然而,有些实现具有标准整数。小时但不是int类型。小时(例如MSVC 2012)。因此,有必要检查每一项并包括仅在可用时提供。

linux/irda。小时

此标题可能需要linux/types。小时和/或sys/socket。小时.

linux/random。小时

此标题可能需要linux/types。小时.

净值/if.h

此标题可能需要系统/类型。小时和/或sys/socket。小时.

netine/if其他。小时

此标题可能需要以下内容的组合系统/类型。小时,sys/socket。小时,网络/in.h、和净值/if.h.

系统/安装。小时

此标题可能需要sys/params(系统/参数)。小时.

系统/个人。小时

此标题可能需要系统/流。小时.

sys/socket。小时

此标头可能需要系统/类型。小时.

系统(uS/u)。小时

此标题可能需要系统/类型。小时.

X11/延长件/scrnsaver。小时

使用XFree86,此标头需要X11/X库。小时,这可能是所以你甚至可能不会考虑寻找它。