2007.09.12 14:09 "Re: [Tiff] SIZEOF_UNSIGNED_LONG", by Edward Lam
Well, this doesn't address the case of it being defined to something odd, like 5.
And why is that a problem? What if my platform does indeed have sizeof(long) == 5? or sizeof(long)==16?
If you're concerned about this, then I think runtime checking is the only real way to do. It should hardly be an efficiency issue if someone like TIFFClientOpen() checked SIZEOF_UNSIGNED_LONG with sizeof(unsigned long) and error out if they don't match.
#if SIZEOF_UNSIGNED_LONG == 8
#elif SIZEOF_UNSIGNED_LONG == 4
#error "SIZEOF_UNSIGNED_LONG undefined or defined to a value other than 4 or 8" #endif
Er, what happened to the SIZEOF_LONG macro? I'm still using 3.7.0 though.
I believe that this bit of code was touched as part of libtiff 4 work and was altered to use unsigned long and the required macro was accordingly changed. I might question the necessity of the change, but for now I'm happy to make this arrangement more bullet proof. SIZEOF_LONG may still be used in other parts of the code base.