|
Message-ID: <20141202180355.GD29621@brightrain.aerifal.cx> Date: Tue, 2 Dec 2014 13:03:55 -0500 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: [PATCH 3/4] use exact types for the [U]INTXX_C macros On Tue, Nov 25, 2014 at 03:50:06PM +0100, Jens Gustedt wrote: > The C standard requires the exact types [u]int_leastXX_t for these > macros in 7.20.4.1 You've misread the standard, and I did too originally. This was fixed in commit a591e0383a0a31ac94541846796b93fedc63a0c4. The relevant text is (C99 7.18.4 or C11 7.20.4, paragraph 3): "Each invocation of one of these macros shall expand to an integer constant expression suitable for use in #if preprocessing directives. The type of the expression shall have the same type as would an expression of the corresponding type converted according to the integer promotions. The value of the expression shall be that of the argument." In the text you're looking at: "The macro INTN_C(value) shall expand to an integer constant expression corresponding to the type int_leastN_t. The macro UINTN_C(value) shall expand to an integer constant expression corresponding to the type uint_leastN_t. For example, if uint_least64_t is a name for the type unsigned long long int, then UINT64_C(0x123) might expand to the integer constant 0x123ULL." the "correspondence" referred to by "corresponding" should be interpreted as the one via integer promotions in the above text I cited. IMO this part of the standard is horribly worded, and I would love to get it improved, because this topic comes up again and again. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.