Well I know that long long isn't always available but alternatives such as long int are usually available in that event and if there is absolutely no built in alternative then I'd like a struct to take it's place if possible.
I read somewhere that there was alternative types when long long is not available
Yes, 15+ years ago, before this practice was standardized by C99, different vendors had differently-named 64-bit types. Microsoft had __int64, many platforms used not-yet-standard int64_t/uint64_t, some just made unsignedlong 64-bit.
I'd like a c89/c90 solution
Use gint64 from glib, or any other general-purpose C library that's old enough. It is counter-productive to do that work yourself.