From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/6640 Path: news.gmane.org!not-for-mail From: Rich Felker Newsgroups: gmane.linux.lib.musl.general Subject: Re: [PATCH 3/4] use exact types for the [U]INTXX_C macros Date: Tue, 2 Dec 2014 13:03:55 -0500 Message-ID: <20141202180355.GD29621@brightrain.aerifal.cx> References: <1416926886.16006.925.camel@eris.loria.fr> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1417543458 26553 80.91.229.3 (2 Dec 2014 18:04:18 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 2 Dec 2014 18:04:18 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-6653-gllmg-musl=m.gmane.org@lists.openwall.com Tue Dec 02 19:04:09 2014 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1Xvro1-00024M-5Z for gllmg-musl@m.gmane.org; Tue, 02 Dec 2014 19:04:09 +0100 Original-Received: (qmail 7347 invoked by uid 550); 2 Dec 2014 18:04:08 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 7335 invoked from network); 2 Dec 2014 18:04:07 -0000 Content-Disposition: inline In-Reply-To: <1416926886.16006.925.camel@eris.loria.fr> User-Agent: Mutt/1.5.21 (2010-09-15) Original-Sender: Rich Felker Xref: news.gmane.org gmane.linux.lib.musl.general:6640 Archived-At: 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