onefile: isaac64.c <math.h> vs yn()
isaac64.c includes <math.h>. yn() is a non-STDC math function in <math.h> and that conflicts with nethack's yn() macro or vice versa. If other source files begin using <math.h> this will probably need to be handled differently.
This commit is contained in:
@@ -7,11 +7,25 @@
|
|||||||
* Changes for NetHack:
|
* Changes for NetHack:
|
||||||
* include config.h;
|
* include config.h;
|
||||||
* skip rest of file if USE_ISAAC64 isn't defined there;
|
* skip rest of file if USE_ISAAC64 isn't defined there;
|
||||||
|
* yn() hackery;
|
||||||
* re-do 'inline' handling.
|
* re-do 'inline' handling.
|
||||||
*/
|
*/
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#ifdef USE_ISAAC64
|
#ifdef USE_ISAAC64
|
||||||
|
/*
|
||||||
|
* OSX <math.h> declares yn() in a section labelled
|
||||||
|
* "POSIX/UNIX extensions to the C standard".
|
||||||
|
*
|
||||||
|
* Even when yn() is not a macro, expansion of nethack's yn() macro
|
||||||
|
* would break it. Matters for 'onefile' lint checking where contents
|
||||||
|
* of hack.h will be visible even though we only include config.h.
|
||||||
|
*/
|
||||||
|
#ifdef yn
|
||||||
|
#undef yn
|
||||||
|
#define _isaac64_hide_yn
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "isaac64.h"
|
#include "isaac64.h"
|
||||||
@@ -171,6 +185,17 @@ uint64_t isaac64_next_uint(isaac64_ctx *_ctx,uint64_t _n){
|
|||||||
while(((d+_n-1)&ISAAC64_MASK)<d);
|
while(((d+_n-1)&ISAAC64_MASK)<d);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _isaac64_hide_yn
|
||||||
|
/* 'onefile' support; restore nethack's yn() macro;
|
||||||
|
this could be made more robust but doesn't need that */
|
||||||
|
#ifdef yn
|
||||||
|
#undef yn /* in case <math.h> defines yn() as a macro */
|
||||||
|
#endif
|
||||||
|
#define yn(query) yn_function(query, ynchars, 'n', TRUE)
|
||||||
|
#undef _isaac64_hide_yn
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* USE_ISAAC64 */
|
#endif /* USE_ISAAC64 */
|
||||||
|
|
||||||
/*isaac64.c*/
|
/*isaac64.c*/
|
||||||
|
|||||||
Reference in New Issue
Block a user