Copyright (C) 2000-2012 |
GNU Info (autoconf.info)Generic DeclarationsGeneric Declaration Checks -------------------------- These macros are used to find declarations not covered by the "particular" test macros. - Macro: AC_CHECK_DECL (SYMBOL, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [INCLUDES = `default-includes']) If SYMBOL (a function or a variable) is not declared in INCLUDES and a declaration is needed, run the shell commands ACTION-IF-NOT-FOUND, otherwise ACTION-IF-FOUND. If no INCLUDES are specified, the default includes are used (Note: Default Includes). This macro actually tests whether it is valid to use SYMBOL as an r-value, not if it is really declared, because it is much safer to avoid introducing extra declarations when they are not needed. - Macro: AC_CHECK_DECLS (SYMBOLS, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [INCLUDES = `default-includes']) For each of the SYMBOLS (_comma_-separated list), define `HAVE_DECL_SYMBOL' (in all capitals) to `1' if SYMBOL is declared, otherwise to `0'. If ACTION-IF-NOT-FOUND is given, it is additional shell code to execute when one of the function declarations is needed, otherwise ACTION-IF-FOUND is executed. This macro uses an m4 list as first argument: AC_CHECK_DECLS(strdup) AC_CHECK_DECLS([strlen]) AC_CHECK_DECLS([malloc, realloc, calloc, free]) Unlike the other `AC_CHECK_*S' macros, when a SYMBOL is not declared, `HAVE_DECL_SYMBOL' is defined to `0' instead of leaving `HAVE_DECL_SYMBOL' undeclared. When you are _sure_ that the check was performed, use `HAVE_DECL_SYMBOL' just like any other result of Autoconf: #if !HAVE_DECL_SYMBOL extern char *symbol; #endif If the test may have not been performed, however, because it is safer _not_ to declare a symbol than to use a declaration that conflicts with the system's one, you should use: #if defined HAVE_DECL_MALLOC && !HAVE_DECL_MALLOC char *malloc (size_t *s); #endif You fall into the second category only in extreme situations: either your files may be used without being configured, or they are used during the configuration. In most cases the traditional approach is enough. automatically generated by info2www version 1.2.2.9 |