(autoconf.info.gz) Generic Declarations
Info Catalog
(autoconf.info.gz) Particular Declarations
(autoconf.info.gz) Declarations
Generic 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 ( 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.
Info Catalog
(autoconf.info.gz) Particular Declarations
(autoconf.info.gz) Declarations
automatically generated byinfo2html