X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f X-Received: by 10.66.65.109 with SMTP id w13mr1177480pas.21.1392917244564; Thu, 20 Feb 2014 09:27:24 -0800 (PST) X-Received: by 10.50.142.66 with SMTP id ru2mr193387igb.9.1392917244013; Thu, 20 Feb 2014 09:27:24 -0800 (PST) Newsgroups: comp.os.msdos.djgpp Date: Thu, 20 Feb 2014 09:27:23 -0800 (PST) In-Reply-To: <5305FF1A.4010804@Damon-Family.org> Complaints-To: groups-abuse AT google DOT com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=118.168.202.186; posting-account=WqoaTgoAAABn_56zOqG1zk1m0UvtHqAO NNTP-Posting-Host: 118.168.202.186 References: <61118811-548e-4c11-8d04-e73de3c7da86 AT googlegroups DOT com> <5305FF1A DOT 4010804 AT Damon-Family DOT org> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <913a8783-5caf-441e-a502-12d2ac4d782f@googlegroups.com> Subject: Re: DJGPP gcc 4.7.3 and 4.8.2 work inconsistently on type uint32_t. From: Andrew Wu Injection-Date: Thu, 20 Feb 2014 17:27:24 +0000 Content-Type: text/plain; charset=UTF-8 X-Received-Bytes: 2438 X-Received-Body-CRC: 2085558268 Bytes: 2693 Lines: 42 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id s1KHj2Ws001452 Reply-To: djgpp AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk Richard Damon於 2014年2月20日星期四UTC+8下午9時11分54秒寫道: > > The problem is that by the standard, %x requires a parameter of type > > (unsigned) int, and uint32_t may or may not be of that type. Printing a > > uint32_t with a %x format is really a BUG in the program (or at the very > > minimum, a dependance on unpromised implementation defined behavior, > > which is really just a polite name for bug. > > > > I will admit that it is a common error for people who grew up on 32 bit > > machines, as for them int has always been 32 bits, so things always just > > worked (even if performing technically undefined behavior if the > > implementation decided that uint32_t should be a unsigned long (which > > also is 32 bits on most 32 bit machines). > > > > If you want to print out a uint32_t, you should include and > > use the macro PRIx32as in > > > > printf("Hello %" PRIx32 " \n", x); > > > > -- > > Richard Damon Ok, I understood. I just wanted to make sure it is not a bug. :D