preprocessor/8139: Bad new INT64_C macro

Philippe RIBET philippe_ribet@hotmail.com
Mon Oct 7 01:59:00 GMT 2002


>What is the new definition?  What is this macro?

Old macro was:

# if __WORDSIZE == 64
#  define INT64_C(c)    c ## L
# else
#  define INT64_C(c)    c ## LL
# endif

New macro is:
#define INT64_C(val) (INT_LEAST64_MAX-INT_LEAST64_MAX+(val))


(in file include/stdint.h)

This macro is part of ANSI C99 standard. It allows to specify integer 
constant size.

>I suspect the warnings are correct, but new, and that the definition
of the macro is unchanged.
No, definition changed.
No, warnings are not correct as INT64_C(-3000000000) is valid code because 
-3000000000 is valid 64bits integer.

>You should probably add a U to the relevant numbers.
??? 'U' with negative numbers ???

>Anyway, not a GCC bug.
Is IS a GCC bug if you consider ANSI C99 standard.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8139


--
Philippe Ribet



_________________________________________________________________
Send and receive Hotmail on your mobile device: http://mobile.msn.com



More information about the Gcc-bugs mailing list