diff --git a/legacy/embryo/src/lib/Embryo.h b/legacy/embryo/src/lib/Embryo.h index 50ab73149e..5083a51e05 100644 --- a/legacy/embryo/src/lib/Embryo.h +++ b/legacy/embryo/src/lib/Embryo.h @@ -86,10 +86,17 @@ extern "C" { Embryo_Cell c; } Embryo_Float_Cell; +#if defined _MSC_VER || defined __SUNPRO_C /** Float to Embryo_Cell */ -#define EMBRYO_FLOAT_TO_CELL(f) ((Embryo_Float_Cell) f).c +# define EMBRYO_FLOAT_TO_CELL(f) (((Embryo_Float_Cell *)&(f))->c) /** Embryo_Cell to float */ -#define EMBRYO_CELL_TO_FLOAT(c) ((Embryo_Float_Cell) c).f +# define EMBRYO_CELL_TO_FLOAT(c) (((Embryo_Float_Cell *)&(c))->f) +#else +/** Float to Embryo_Cell */ +# define EMBRYO_FLOAT_TO_CELL(f) ((Embryo_Float_Cell) f).c +/** Embryo_Cell to float */ +# define EMBRYO_CELL_TO_FLOAT(c) ((Embryo_Float_Cell) c).f +#endif EAPI int embryo_init(void); EAPI int embryo_shutdown(void);