Use GCC's format attribute for al_printf

This commit is contained in:
Chris Robinson 2010-01-12 08:48:25 -08:00
parent 5921e18be2
commit 0c2efa1253
3 changed files with 13 additions and 1 deletions

View File

@ -136,6 +136,9 @@ ELSE()
ENDIF()
ENDIF()
CHECK_C_SOURCE_COMPILES("int foo(const char *str, ...) __attribute__((format(printf, 1, 2)));
int main() {return 0;}" HAVE_GCC_FORMAT)
CHECK_INCLUDE_FILE(fenv.h HAVE_FENV_H)
CHECK_INCLUDE_FILE(float.h HAVE_FLOAT_H)

View File

@ -28,6 +28,12 @@ typedef long long ALint64;
typedef unsigned long long ALuint64;
#endif
#ifdef HAVE_GCC_FORMAT
#define PRINTF_STYLE(x, y) __attribute__((format(printf, (x), (y))))
#else
#define PRINTF_STYLE(x, y)
#endif
#ifdef _WIN32
#ifndef _WIN32_WINNT
@ -145,7 +151,7 @@ static inline void Sleep(ALuint t)
extern "C" {
#endif
static __inline void al_print(const char *fname, unsigned int line, const char *fmt, ...)
static __inline PRINTF_STYLE(3,4) void al_print(const char *fname, unsigned int line, const char *fmt, ...)
{
const char *fn;
char str[256];

View File

@ -67,6 +67,9 @@
/* Define if we have GCC's destructor attribute */
#cmakedefine HAVE_GCC_DESTRUCTOR
/* Define if we have GCC's format attribute */
#cmakedefine HAVE_GCC_FORMAT
/* Define if we have pthread_np.h */
#cmakedefine HAVE_PTHREAD_NP_H