On Thu, 1 Oct 2020 at 14:22, Alejandro Colomar <colomar.6.4.3@xxxxxxxxx> wrote: > > > > On 2020-10-01 14:54, Szabolcs Nagy wrote: > > The 10/01/2020 12:14, Alejandro Colomar via Gcc wrote: > >> Here is the rendered intmax_t: > >> > >> intmax_t > >> Include: <stdint.h>. Alternatively, <inttypes.h>. > >> > >> A signed integer type capable of representing any value of any > >> signed integer type supported by the implementation. According > >> to the C language standard, it shall be capable of storing val- > >> ues in the range [INTMAX_MIN, INTMAX_MAX]. > >> > >> The macro INTMAX_C() expands its argument to an integer constant > >> of type intmax_t. > >> > >> The length modifier for intmax_t for the printf(3) and the > >> scanf(3) families of functions is j; resulting commonly in %jd > >> or %ji for printing intmax_t values. > >> > >> Bugs: intmax_t is not large enough to represent values of type > >> __int128 in implementations where __int128 is defined and long > >> long is less than 128 bits wide. > > > > or __int128 is not an integer type. > > > > integer types are either standard or extended. > > and __int128 is neither because it can be > > larger than intmax_t and stdint.h does not > > provide the necessary macros for it. > > > Hi Szabolcs, > > I know GCC decided to not call it an integer type, and call it instead a > scalar type, just to conform with the standards, at the same time > provide a 128 int, and at the same time, not have to change the ABI of > intmax_t. > > But it looks like an integer type, > and in almost any possible way, it acts like an integer type. > > I could call '__int128' a signed _scalar_ type in the description, but > that might confuse those who don't know these details. Do you think it > would be better to call it that way, or just keep the integer word? > (Jonathan, I'd also like to know your thoughts on this, BTW). I hope WG14 will adopt something like http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2465.pdf and the whole mess will go away. intmax_t will be deprecated, and implementations can provide 128-bit integers without caveats.