template<class T> inline void serialize(const T & value, FILE *fp) { fwrite(&value, sizeof(T), 1, fp); } struct Object { int param1; int param2; int param3; int param4; // C++ Style inline void SaveCPP(FILE *fp) const { serialize(param1, fp); serialize(param2, fp); serialize(param3, fp); serialize(param4, fp); } // C Style inline void SaveC(FILE *fp) const { fwrite(this, sizeof(Object), 1, fp); } };