宏AC_TRY_CPP用于检测某个特定的头文件是否存在。你可以一次检查一个头文件,或者如果你为了某些目的 而希望多个头文件都存在,也可以一次检查多个头文件。

宏: AC_TRY_CPP (includes, [action-if-true [, action-if-false]])
includes是C或C++的#include语句和声明,对于它,将进行shell变量、反引用(backquote)、以及反斜线 (backslash)替换。(实际上,它可以是任何C程序,但其它的语句可能没有用。)如果预处理器在处理它的时候没有报告错误, 就运行shell命令action-if-true。否则运行shell命令action-if-false。

本宏使用CPPFLAGS,而不使用CFLAGS,这是因为-g'、-O’等选项对于 许多C预处理器来说都是不合法的选项。

下面是如何确认在某个头文件中是否包含一个特定的声明,比如说typedef、结构、结构成员或者一个函数。使用 AC_EGREP_HEADER而不是对头文件直接运行grep;在某些系统中,符号可能是在另一个你所检查的`#include’文件。

宏: AC_EGREP_HEADER (pattern, header-file, action-if-found [, action-if-not-found])
如果对系统头文件header-file运行预处理器所产生的输出与egrep常规表达式pattern相匹配, 就执行shell命令action-if-found,否则执行action-if-not-found。

为了检查由头文件或者C预处理器预定义的C预处理器符号,使用AC_EGREP_CPP。下面是后者的一个例子:

AC_EGREP_CPP(yes,
[#ifdef _AIX
yes

#endif
], is_aix=yes, is_aix=no)

宏: AC_EGREP_CPP (pattern, program, [action-if-found [, action-if-not-found]])
program是C或者C++的程序文本,对于它,将进行shell变量、反引号(backquote)以及反斜线(backslash)替换。 如果对program运行预处理器产生的输出与egrep常规表达式(regular expression)pattern 相匹配,就执行shell命令action-if-found,否则执行action-if-not-found。

如果宏还没有调用AC_PROG_CPP或者AC_PROG_CXXCPP(根据当前语言来确定使用那个宏, 参见对语言的选择),本宏将调用它。