| #ifndef _GL_WARN_ON_USE |
| |
| # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) |
| /* A compiler attribute is available in gcc versions 4.3.0 and later. */ |
| # define _GL_WARN_ON_USE(function, message) \ |
| extern __typeof__ (function) function __attribute__ ((__warning__ (message))) |
| # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING |
| /* Verify the existence of the function. */ |
| # define _GL_WARN_ON_USE(function, message) \ |
| extern __typeof__ (function) function |
| # else /* Unsupported. */ |
| # define _GL_WARN_ON_USE(function, message) \ |
| _GL_WARN_EXTERN_C int _gl_warn_on_use |
| # endif |
| #endif |
| |
| /* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") |
| is like _GL_WARN_ON_USE (function, "string"), except that the function is |
| declared with the given prototype, consisting of return type, parameters, |
| and attributes. |
| This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does |
| not work in this case. */ |
| #ifndef _GL_WARN_ON_USE_CXX |
| # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) |
| # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ |
| extern rettype function parameters_and_attributes \ |
| __attribute__ ((__warning__ (msg))) |
| # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING |
| /* Verify the existence of the function. */ |
| # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ |
| extern rettype function parameters_and_attributes |
| # else /* Unsupported. */ |
| # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ |
| _GL_WARN_EXTERN_C int _gl_warn_on_use |
| # endif |
| #endif |
| |
| /* _GL_WARN_EXTERN_C declaration; |
| performs the declaration with C linkage. */ |
| #ifndef _GL_WARN_EXTERN_C |
| # if defined __cplusplus |
| # define _GL_WARN_EXTERN_C extern "C" |
| # else |
| # define _GL_WARN_EXTERN_C extern |
| # endif |
| #endif |