[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
These macros are used to find declarations not covered by the "particular" test macros.
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.
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 void *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.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |