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);