1 |
#ifndef __BEAENGINE_MACROS_H__ |
2 |
#define __BEAENGINE_MACROS_H__ |
3 |
/* |
4 |
============================================================================ |
5 |
Compiler Silencing macros |
6 |
|
7 |
Some compilers complain about parameters that are not used. This macro |
8 |
should keep them quiet. |
9 |
============================================================================ |
10 |
*/ |
11 |
|
12 |
# if defined (__GNUC__) && ((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))) |
13 |
# define BEA_UNUSED_ARG(a) (void) (a) |
14 |
#elif defined (ghs) || defined (__GNUC__) || defined (__hpux) || defined (__sgi) || defined (__DECCXX) || defined (__rational__) || defined (__USLC__) || defined (BEA__RM544) || defined (__DCC__) || defined (__PGI) || defined (__TANDEM) || defined(__BORLANDC__) |
15 |
/* |
16 |
Some compilers complain about "statement with no effect" with (a). |
17 |
This eliminates the warnings, and no code is generated for the null |
18 |
conditional statement. Note, that may only be true if -O is enabled, |
19 |
such as with GreenHills (ghs) 1.8.8. |
20 |
*/ |
21 |
|
22 |
# define BEA_UNUSED_ARG(a) do {/* null */} while (&a == 0) |
23 |
#elif defined (__DMC__) |
24 |
#if defined(__cplusplus) |
25 |
#define BEA_UNUSED_ID(identifier) |
26 |
template <class T> |
27 |
inline void BEA_UNUSED_ARG(const T& BEA_UNUSED_ID(t)) { } |
28 |
#else |
29 |
#define BEA_UNUSED_ARG(a) |
30 |
#endif |
31 |
#else /* ghs || __GNUC__ || ..... */ |
32 |
# define BEA_UNUSED_ARG(a) (a) |
33 |
#endif /* ghs || __GNUC__ || ..... */ |
34 |
|
35 |
#if defined (_MSC_VER) || defined(__sgi) || defined (ghs) || defined (__DECCXX) || defined(__BORLANDC__) || defined (BEA_RM544) || defined (__USLC__) || defined (__DCC__) || defined (__PGI) || defined (__TANDEM) || (defined (__HP_aCC) && (__HP_aCC >= 60500)) |
36 |
# define BEA_NOTREACHED(a) |
37 |
#else /* __sgi || ghs || ..... */ |
38 |
# define BEA_NOTREACHED(a) a |
39 |
#endif /* __sgi || ghs || ..... */ |
40 |
|
41 |
#endif /* __BEAENGINE_MACROS_H__ */ |