It looks okay to me.
(Error again is line 21: ISO C++ forbids defining types within return type)
#ifdef HAVE_LONG_LONG operator LONG_LONG () const {
That's not definition of type LONG_LONG but an implicit conversion from some class to this type. Better post the preprocessed output...
I guess the easy way to fix this would be to somehow un-define HAVE_LONG_LONG?
That's not a fix.
