the lines #define pgm_read_float(addr) (*reinterpret_cast<const float*>(addr)) //dw fixed #define pgm_read_float(addr) (*(const float*)(addr)) // dw fixed was/is #define pgm_read_float(addr) (*reinterpret_cast<const float>(addr)) // error #define pgm_read_float(addr) (*(const float)(addr)) // error Notice both were missing the pointer part on the cast.