Open ddeclerck opened 4 months ago
This is the wrong place for this "feature request" - please create that upstream.
Obviously:
C99 types are nice - and should be postponed to GC4 with a fallback possibly provided by gnulib.
For the specific sample: a cast / bitwise truncation to cob_u32_t would be fine as well.
Indeed, I opened that on SF => https://sourceforge.net/p/gnucobol/feature-requests/476/.
A potential source of bugs - and one of the reasons the MSVC debug CIs hangs / displays a runtime checker popup - is the use of the
long
type , whose size differs in 64-bit mode on MSVC (4 bytes) vs "rest of the world" compilers (8 bytes). (nitpicker's corner: okay, there might be a few other exceptions)As an example, the test
FUNCTION RANDOM
fails here (intrinsic.c:cob_intr_random
) :Indeed, a 64-bit pointer won't fit in a 32-bit long, and the MSVC runtime checker will complain.
Wherever the size matters, I'd suggest using the C99 fixed width integer types
(u)int64_t
- providing a custom definition when missing. Or, we could just usecob_u64_t
/cob_s64_t
. (nitpicker's corner bis: yeah, for a pointer the proper cast would be to(u)intptr_t
, not(u)int64_t
)Thoughts ?