-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
For better portability, stop using the type long
#159
Comments
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/. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 ?
The text was updated successfully, but these errors were encountered: