It's common when integrating CCAN into existing projects that they define
such constants for themselves. In an ideal world, the entire project
switches to one set of definitions, but for large projects (eg SAMBA)
that's not realistic and conflicts with the aim of making CCAN modules
easy to "drop in" to existing code.
(This is a generalization of Douglas Bagnell's patch sent in Message-ID:
<
4DB8D00D.
8000800@paradise.net.nz>).
#define CCAN_COMPILER_H
#include "config.h"
#define CCAN_COMPILER_H
#include "config.h"
#if HAVE_ATTRIBUTE_COLD
/**
* COLD - a function is unlikely to be called.
#if HAVE_ATTRIBUTE_COLD
/**
* COLD - a function is unlikely to be called.
#else
#define COLD
#endif
#else
#define COLD
#endif
#if HAVE_ATTRIBUTE_NORETURN
/**
* NORETURN - a function does not return
#if HAVE_ATTRIBUTE_NORETURN
/**
* NORETURN - a function does not return
#else
#define NORETURN
#endif
#else
#define NORETURN
#endif
#if HAVE_ATTRIBUTE_PRINTF
/**
* PRINTF_FMT - a function takes printf-style arguments
#if HAVE_ATTRIBUTE_PRINTF
/**
* PRINTF_FMT - a function takes printf-style arguments
#else
#define PRINTF_FMT(nfmt, narg)
#endif
#else
#define PRINTF_FMT(nfmt, narg)
#endif
#if HAVE_ATTRIBUTE_CONST
/**
* IDEMPOTENT - a function's return depends only on its argument
#if HAVE_ATTRIBUTE_CONST
/**
* IDEMPOTENT - a function's return depends only on its argument
#else
#define IDEMPOTENT
#endif
#else
#define IDEMPOTENT
#endif
#if HAVE_ATTRIBUTE_UNUSED
#if HAVE_ATTRIBUTE_UNUSED
/**
* UNNEEDED - a variable/function may not be needed
*
/**
* UNNEEDED - a variable/function may not be needed
*
* }
*/
#define UNNEEDED __attribute__((unused))
* }
*/
#define UNNEEDED __attribute__((unused))
#if HAVE_ATTRIBUTE_USED
/**
* NEEDED - a variable/function is needed
#if HAVE_ATTRIBUTE_USED
/**
* NEEDED - a variable/function is needed
/* Before used, unused functions and vars were always emitted. */
#define NEEDED __attribute__((unused))
#endif
/* Before used, unused functions and vars were always emitted. */
#define NEEDED __attribute__((unused))
#endif
/**
* UNUSED - a parameter is unused
*
/**
* UNUSED - a parameter is unused
*
* }
*/
#define UNUSED __attribute__((unused))
* }
*/
#define UNUSED __attribute__((unused))
+#ifndef IS_COMPILE_CONSTANT
#if HAVE_BUILTIN_CONSTANT_P
/**
* IS_COMPILE_CONSTANT - does the compiler know the value of this expression?
#if HAVE_BUILTIN_CONSTANT_P
/**
* IS_COMPILE_CONSTANT - does the compiler know the value of this expression?
/* If we don't know, assume it's not. */
#define IS_COMPILE_CONSTANT(expr) 0
#endif
/* If we don't know, assume it's not. */
#define IS_COMPILE_CONSTANT(expr) 0
#endif
+#ifndef WARN_UNUSED_RESULT
#if HAVE_WARN_UNUSED_RESULT
/**
* WARN_UNUSED_RESULT - warn if a function return value is unused.
#if HAVE_WARN_UNUSED_RESULT
/**
* WARN_UNUSED_RESULT - warn if a function return value is unused.
#else
#define WARN_UNUSED_RESULT
#endif
#else
#define WARN_UNUSED_RESULT
#endif
#endif /* CCAN_COMPILER_H */
#endif /* CCAN_COMPILER_H */