1#ifndef _GL_WARN_ON_USE
2
3# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
4/* A compiler attribute is available in gcc versions 4.3.0 and later.  */
5#  define _GL_WARN_ON_USE(function, message) \
6extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
7# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
8/* Verify the existence of the function.  */
9#  define _GL_WARN_ON_USE(function, message) \
10extern __typeof__ (function) function
11# else /* Unsupported.  */
12#  define _GL_WARN_ON_USE(function, message) \
13_GL_WARN_EXTERN_C int _gl_warn_on_use
14# endif
15#endif
16
17/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
18   is like _GL_WARN_ON_USE (function, "string"), except that the function is
19   declared with the given prototype, consisting of return type, parameters,
20   and attributes.
21   This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
22   not work in this case.  */
23#ifndef _GL_WARN_ON_USE_CXX
24# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
25#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
26extern rettype function parameters_and_attributes \
27     __attribute__ ((__warning__ (msg)))
28# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
29/* Verify the existence of the function.  */
30#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
31extern rettype function parameters_and_attributes
32# else /* Unsupported.  */
33#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
34_GL_WARN_EXTERN_C int _gl_warn_on_use
35# endif
36#endif
37
38/* _GL_WARN_EXTERN_C declaration;
39   performs the declaration with C linkage.  */
40#ifndef _GL_WARN_EXTERN_C
41# if defined __cplusplus
42#  define _GL_WARN_EXTERN_C extern "C"
43# else
44#  define _GL_WARN_EXTERN_C extern
45# endif
46#endif
47