mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-04-12 17:31:09 +08:00
For portability, insulate the HDF5 library from some system macros.
This commit is contained in:
parent
7c82abc3ff
commit
cef5db7e1f
@ -345,6 +345,14 @@
|
||||
#define FAIL (-1)
|
||||
#define UFAIL (unsigned)(-1)
|
||||
|
||||
/* The HDF5 library uses the symbol `ERR` frequently. So do
|
||||
* header files for libraries such as curses(3), terminfo(3), etc.
|
||||
* Remove its definition here to avoid clashes with HDF5.
|
||||
*/
|
||||
#ifdef ERR
|
||||
#undef ERR
|
||||
#endif
|
||||
|
||||
/* number of members in an array */
|
||||
#ifndef NELMTS
|
||||
# define NELMTS(X) (sizeof(X)/sizeof(X[0]))
|
||||
@ -1645,9 +1653,18 @@ extern char *strdup(const char *s);
|
||||
|
||||
/* Assign a variable to one of a different size (think safer dst = (dsttype)src").
|
||||
* The code generated by the macro checks for overflows.
|
||||
*
|
||||
* Use w##x##y##z instead of H5_GLUE4(w, x, y, z) because srctype
|
||||
* or dsttype on some systems (e.g., NetBSD 8 and earlier) may
|
||||
* supply some standard types using a macro---e.g.,
|
||||
* #define uint8_t __uint8_t. The preprocessor will expand the
|
||||
* macros before it evaluates H5_GLUE4(), and that will generate
|
||||
* an unexpected name such as ASSIGN___uint8_t_TO___uint16_t.
|
||||
* The preprocessor does not expand macros in w##x##y##z, so
|
||||
* that will always generate the expected name.
|
||||
*/
|
||||
#define H5_CHECKED_ASSIGN(dst, dsttype, src, srctype) \
|
||||
H5_GLUE4(ASSIGN_,srctype,_TO_,dsttype)(dst,dsttype,src,srctype)\
|
||||
ASSIGN_##srctype##_TO_##dsttype(dst,dsttype,src,srctype)\
|
||||
|
||||
#else /* NDEBUG */
|
||||
#define H5_CHECKED_ASSIGN(dst, dsttype, src, srctype) \
|
||||
|
Loading…
x
Reference in New Issue
Block a user