I upgraded from OSX 10.5.8 via 10.6.3 to 10.6.8, plus Xcode to whatever version was on the 10.6 dvd, and ended up with a more recent version of gcc that is configured to use 64 bit longs and 64 bit pointers (by default; presumably that can be changed if necessary). It triggered several warnings about converting int to pointer of different size or vice versa even when explicit casts were in use, and a couple of other things.
79 lines
3.0 KiB
C
79 lines
3.0 KiB
C
/* NetHack 3.6 lint.h $NHDT-Date: 1454571508 2016/02/04 07:38:28 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.4 $ */
|
|
/* NetHack may be freely redistributed. See license for details. */
|
|
|
|
/*
|
|
* Hacks to suppress compiler warnings. Use with caution.
|
|
* Assumes it has been preceded by '#include "config.h"' but
|
|
* not necessarily by '#include "hack.h"'.
|
|
*/
|
|
#ifndef LINT_H
|
|
#define LINT_H
|
|
|
|
/* cast away implicit const from a string literal (caller's responsibility
|
|
to ensure that) in order to avoid a warning from 'gcc -Wwrite-strings'
|
|
(also caller's responsibility to ensure it isn't actually modified!) */
|
|
#define nhStr(str) ((char *) str)
|
|
|
|
#if defined(GCC_WARN) && !defined(FORCE_ARG_USAGE)
|
|
#define FORCE_ARG_USAGE
|
|
#endif
|
|
|
|
#ifdef FORCE_ARG_USAGE
|
|
/* force an unused function argument to become used in an arbitrary
|
|
manner in order to suppress warning about unused function arguments;
|
|
viable for scalar and pointer arguments */
|
|
#define nhUse(arg) nhUse_dummy += (unsigned) !(arg)
|
|
extern unsigned nhUse_dummy;
|
|
#else
|
|
#define nhUse(arg) /*empty*/
|
|
#endif
|
|
|
|
/*
|
|
* This stuff isn't related to lint suppression but lives here to
|
|
* avoid cluttering up hack.h.
|
|
*/
|
|
/* [DEBUG shouldn't be defined unless you know what you're doing...] */
|
|
#ifdef DEBUG
|
|
#define showdebug(file) debugcore(file, TRUE)
|
|
#define explicitdebug(file) debugcore(file, FALSE)
|
|
#define ifdebug(stmt) \
|
|
do { \
|
|
if (showdebug(__FILE__)) { \
|
|
stmt; \
|
|
} \
|
|
} while (0)
|
|
#ifdef _MSC_VER
|
|
/* if we have microsoft's C runtime we can use these instead */
|
|
#include <crtdbg.h>
|
|
#define crtdebug(stmt) \
|
|
do { \
|
|
if (showdebug(__FILE__)) { \
|
|
stmt; \
|
|
} \
|
|
_RPT0(_CRT_WARN, "\n"); \
|
|
} while (0)
|
|
#define debugpline0(str) crtdebug(_RPT0(_CRT_WARN, str))
|
|
#define debugpline1(fmt, arg) crtdebug(_RPT1(_CRT_WARN, fmt, arg))
|
|
#define debugpline2(fmt, a1, a2) crtdebug(_RPT2(_CRT_WARN, fmt, a1, a2))
|
|
#define debugpline3(fmt, a1, a2, a3) \
|
|
crtdebug(_RPT3(_CRT_WARN, fmt, a1, a2, a3))
|
|
#define debugpline4(fmt, a1, a2, a3, a4) \
|
|
crtdebug(_RPT4(_CRT_WARN, fmt, a1, a2, a3, a4))
|
|
#else
|
|
/* these don't require compiler support for C99 variadic macros */
|
|
#define debugpline0(str) ifdebug(pline(str))
|
|
#define debugpline1(fmt, arg) ifdebug(pline(fmt, arg))
|
|
#define debugpline2(fmt, a1, a2) ifdebug(pline(fmt, a1, a2))
|
|
#define debugpline3(fmt, a1, a2, a3) ifdebug(pline(fmt, a1, a2, a3))
|
|
#define debugpline4(fmt, a1, a2, a3, a4) ifdebug(pline(fmt, a1, a2, a3, a4))
|
|
#endif
|
|
#else
|
|
#define debugpline0(str) /*empty*/
|
|
#define debugpline1(fmt, arg) /*empty*/
|
|
#define debugpline2(fmt, a1, a2) /*empty*/
|
|
#define debugpline3(fmt, a1, a2, a3) /*empty*/
|
|
#define debugpline4(fmt, a1, a2, a3, a4) /*empty*/
|
|
#endif /*DEBUG*/
|
|
|
|
#endif /* LINT_H */
|