mirror of
https://github.com/SDL-Hercules-390/hyperion.git
synced 2026-04-10 22:24:32 +02:00
100 lines
4.8 KiB
C
100 lines
4.8 KiB
C
/* ccnowarn.h (C) Copyright "Fish" (David B. Trout), 2011 */
|
|
/* */
|
|
/* Released under "The Q Public License Version 1" */
|
|
/* (http://www.hercules-390.org/herclic.html) */
|
|
/* as modifications to Hercules. */
|
|
|
|
/*-------------------------------------------------------------------*/
|
|
/* The "DISABLE_xxx_WARNING" and "ENABLE_xxx_WARNING" macros allow */
|
|
/* you to temporarily suppress certain harmless compiler warnings. */
|
|
/* Use the "_DISABLE" macro before the source statement which is */
|
|
/* causing the problem and the "_ENABLE" macro shortly afterwards. */
|
|
/* PLEASE DO NOT GO OVERBOARD (overdo or overuse) THE SUPPRESSION */
|
|
/* OF WARNINGS! Most warnings are actually bugs waiting to happen. */
|
|
/* The "DISABLE_xxx_WARNING" and "ENABLE_xxx_WARNING" macros are */
|
|
/* only meant as a temporary measure until the warning itself can */
|
|
/* be properly investigated and resolved. */
|
|
/*-------------------------------------------------------------------*/
|
|
|
|
#include "ccfixme.h" /* need "QSTR" macro, etc */
|
|
|
|
#ifndef _CCNOWARN_H_
|
|
#define _CCNOWARN_H_
|
|
|
|
/*---------------------------------------------------------------*/
|
|
/* Microsoft Visual C++ */
|
|
/*---------------------------------------------------------------*/
|
|
|
|
#if defined( _MSVC_ )
|
|
|
|
#define DISABLE_MSVC_WARNING( _num, _msg ) \
|
|
\
|
|
__pragma( warning( push ) ) \
|
|
__pragma( warning( disable : _num ) ) \
|
|
FIXME( _msg )
|
|
#define ENABLE_MSVC_WARNING( _num ) \
|
|
\
|
|
__pragma( warning( pop ) )
|
|
|
|
/* Globally disable some uninteresting MSVC compiler warnings */
|
|
|
|
#pragma warning( disable: 4127 ) // "conditional expression is constant"
|
|
#pragma warning( disable: 4142 ) // "benign redefinition of type"
|
|
#pragma warning( disable: 4146 ) // "unary minus operator applied to unsigned type, result still unsigned"
|
|
#pragma warning( disable: 4200 ) // "nonstandard extension used : zero-sized array in struct/union"
|
|
#pragma warning( disable: 4244 ) // (floating-point only?) "conversion from 'x' to 'y', possible loss of data"
|
|
#pragma warning( disable: 4267 ) // "conversion from size_t to int possible loss of data"
|
|
#pragma warning( disable: 4748 ) // "/GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function"
|
|
|
|
#endif
|
|
|
|
#ifndef DISABLE_MSVC_WARNING
|
|
#define DISABLE_MSVC_WARNING( _opt, _msg ) /* (do nothing) */
|
|
#define ENABLE_MSVC_WARNING( _opt ) /* (do nothing) */
|
|
#endif
|
|
|
|
/*---------------------------------------------------------------*/
|
|
/* GNU Compiler Collection */
|
|
/*---------------------------------------------------------------*/
|
|
|
|
#if defined( __GNUC__ )
|
|
#ifdef HAVE_GCC_DIAG_PRAGMA
|
|
#define PRAGMA_GCC_DIAG( _opt ) _Pragma( GCC diagnostic _opt )
|
|
#define GCC_WARNING_ON( _opt ) PRAGMA_GCC_DIAG( warning QSTR2( -W, _opt ) )
|
|
#define GCC_WARNING_OFF( _opt, _msg ) PRAGMA_GCC_DIAG( ignored QSTR2( -W, _opt ) ) \
|
|
FIXME( _msg )
|
|
#ifdef HAVE_GCC_DIAG_PUSHPOP
|
|
#define DISABLE_GCC_WARNING( _opt, _msg ) PRAGMA_GCC_DIAG( push ) \
|
|
GCC_WARNING_OFF( _opt, _msg )
|
|
#define ENABLE_GCC_WARNING( _opt ) PRAGMA_GCC_DIAG( pop )
|
|
#else
|
|
#define DISABLE_GCC_WARNING( _opt, _msg ) GCC_WARNING_OFF( _opt, _msg )
|
|
#define ENABLE_GCC_WARNING( _opt ) GCC_WARNING_ON( _opt )
|
|
#endif
|
|
|
|
/* Globally disable some rather annoying GCC compiler warnings which */
|
|
/* frequently occurs due to our build multiple architectures design. */
|
|
|
|
#if GCC_VERSION >= 40304
|
|
#pragma GCC diagnostic ignored "-Wunused-function" // "'xxxxxxxx' defined but not used"
|
|
#endif
|
|
#if GCC_VERSION >= 40600
|
|
#pragma GCC diagnostic ignored "-Wunused-but-set-variable" // "variable 'xxx' set but not used"
|
|
#endif
|
|
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef DISABLE_GCC_WARNING
|
|
#define DISABLE_GCC_WARNING( _opt, _msg ) /* (do nothing) */
|
|
#define ENABLE_GCC_WARNING( _opt ) /* (do nothing) */
|
|
#endif
|
|
|
|
/*---------------------------------------------------------------*/
|
|
/* ((((((((( define support for other compilers here ))))))))) */
|
|
/*---------------------------------------------------------------*/
|
|
|
|
/* ( don't forget to define a "FIXME" macro too. See ccfixme.h ) */
|
|
|
|
#endif /* _CCNOWARN_H_ */
|