mirror of https://github.com/OpenTTD/OpenTTD
(svn r3263) -Fix: use () around 'variables' in macros, gives less crashes ;)
-Fix: va-args in macros are supported via __VA_ARGS__ in C99, so changed to that; now GCC 2.95 likes it too :)release/0.4.5
parent
1a93bcb5bb
commit
a3d142ed57
|
@ -7,25 +7,14 @@
|
|||
# include "ai.h"
|
||||
|
||||
/* This is how we call events (with safety-check) to GPMI */
|
||||
/* XXX -- This macro (vararg macro) isn't supported on old GCCs, but GPMI
|
||||
* is using them too, so it isn't a real problem, yet */
|
||||
# define ai_event(player, event, params...) \
|
||||
if (player < MAX_PLAYERS && _ai_player[player].module != NULL) \
|
||||
gpmi_event(_ai_player[player].module, event, params)
|
||||
# define ai_event(player, event, ...) \
|
||||
if ((player) < MAX_PLAYERS && _ai_player[(player)].module != NULL) \
|
||||
gpmi_event(_ai_player[(player)].module, (event), ##__VA_ARGS__)
|
||||
|
||||
#else
|
||||
/* If GPMI isn't loaded, don't do a thing with the events (for now at least)
|
||||
* Because old GCCs don't support vararg macros, and OTTD does support those
|
||||
* GCCs, we need something tricky to ignore the events... and this is the solution :)
|
||||
* Ugly, I know, but it works! */
|
||||
|
||||
# ifdef DEF_EVENTS
|
||||
void CDECL empty_function(PlayerID player, int event, ...) {}
|
||||
# else
|
||||
extern void CDECL empty_function(PlayerID player, int event, ...);
|
||||
# endif
|
||||
# define ai_event empty_function
|
||||
#else /* GPMI */
|
||||
|
||||
/* If GPMI isn't loaded, don't do a thing with the events (for now at least) */
|
||||
# define ai_event(...)
|
||||
#endif /* GPMI */
|
||||
|
||||
/* To make our life a bit easier; you now only have to define new
|
||||
|
|
Loading…
Reference in New Issue