From: "R. J. Wysocki" <rjwysocki@sisk.pl>
To: root@chaos.analogic.com, tom st denis <tomstdenis@yahoo.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Prohibited attachment type (was 0xdeadbeef)
Date: Wed, 7 Jul 2004 14:13:18 +0200 [thread overview]
Message-ID: <200407071413.18608.rjwysocki@sisk.pl> (raw)
In-Reply-To: <Pine.LNX.4.53.0407070715380.17430@chaos>
On Wednesday 07 of July 2004 13:18, Richard B. Johnson wrote:
> On Wed, 7 Jul 2004, tom st denis wrote:
> > --- viro@parcelfarce.linux.theplanet.co.uk wrote:
> > > On Tue, Jul 06, 2004 at 05:06:12PM -0700, tom st denis wrote:
> > > > --- David Eger <eger@havoc.gtf.org> wrote:
> > > > > Is there a reason to add the 'L' to such a 32-bit constant like
> > >
> > > this?
> > >
> > > > > There doesn't seem a great rhyme to it in the headers...
> > > >
> > > > IIRC it should have the L [probably UL instead] since numerical
> > > > constants are of type ``int'' by default.
> > > >
> > > > Normally this isn't a problem since int == long on most platforms
> > >
> > > that
> > >
> > > > run Linux. However, by the standard 0xdeadbeef is not a valid
> > >
> > > unsigned
> > >
> > > > long constant.
> > >
> > > ... and that would be your F for C101. Suggested remedial reading
> > > before
> > > you take the test again: any textbook on C, section describing
> > > integer
> > > constants; alternatively, you can look it up in any revision of C
> > > standard.
> > > Pay attention to difference in the set of acceptable types for
> > > decimal
> > > and heaxdecimal constants.
> >
> > You're f'ing kidding me right? Dude, I write portable ISO C source
> > code for a living. My code has been built on dozens and dozens of
> > platforms **WITHOUT** changes. I know what I'm talking about.
> >
> > 0x01, 1 are 01 all **int** constants.
> >
> > On some platforms 0xdeadbeef may be a valid int, in most cases the
> > compiler won't diagnostic it. splint thought it was worth mentioning
> > which is why I replied.
> >
> > In fact GCC has odd behaviour. It will diagnostic
> >
> > char x = 0xFF;
> >
> > and
> >
> > int x = 0xFFFFFFFFULL;
> >
> > But not
> >
> > int x = 0xFFFFFFFF;
> >
> > [with --std=c99 -pedantic -O2 -Wall -W]
> >
> > So I'd say it thinks that all of the constants are "int". In this case
> > 0xFF is greater than 127 [max for char] and 0xFFFFFFFFFFULL is larger
> > than max for int. in the 3rd case the expression is converted
> > implicitly to int before the assignment is performed which is why there
> > is no warning.
> >
> > Before you step down to belittle others I'd suggest you actually make
> > sure you're right.
> >
> > Tom
>
> Tom is correct. A literal constant defaults to 'int'.
Anyway, I think it's a good idea to put L wherever a constant is meant to be
'long' and U wherever it's meant to be 'unsigned' etc., because it may be
useful in debigging, eg.:
1) identifying wrong types being used (eg. int vs long, int vs unsigned, long
vs unsigned long),
2) identifying typos (eg. 0x100000000 vs 0x10000000)
Yours,
rjw
--
Rafael J. Wysocki
----------------------------
For a successful technology, reality must take precedence over public
relations, for nature cannot be fooled.
-- Richard P. Feynman
next prev parent reply other threads:[~2004-07-07 12:04 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-06 21:56 0xdeadbeef vs 0xdeadbeefL David Eger
2004-07-07 0:06 ` tom st denis
2004-07-07 3:00 ` viro
2004-07-07 11:10 ` tom st denis
2004-07-07 11:18 ` Prohibited attachment type (was 0xdeadbeef) Richard B. Johnson
2004-07-07 11:48 ` tom st denis
2004-07-07 12:29 ` Jakub Jelinek
2004-07-08 5:52 ` Pavel Machek
2004-07-08 14:03 ` Jakub Jelinek
2004-07-07 12:13 ` R. J. Wysocki [this message]
2004-07-07 14:22 ` 0xdeadbeef vs 0xdeadbeefL viro
2004-07-07 18:47 ` tom st denis
2004-07-07 16:30 ` Gabriel Paubert
2004-07-07 18:41 ` tom st denis
2004-07-07 18:47 ` Christoph Hellwig
2004-07-07 18:53 ` tom st denis
2004-07-07 23:17 ` Harald Arnesen
2004-07-08 6:15 ` David Weinehall
2004-07-08 9:32 ` [OT] " Gabriel Paubert
2004-07-08 11:15 ` viro
2004-07-08 11:55 ` Gabriel Paubert
2004-07-08 16:41 ` Andries Brouwer
2004-07-08 17:13 ` Michael Driscoll
2004-07-08 17:16 ` Horst von Brand
2004-07-10 1:52 ` Andrew Rodland
2004-07-07 0:38 ` Richard B. Johnson
2004-07-07 4:52 ` David Eger
2004-07-07 11:40 ` Richard B. Johnson
2004-07-07 15:57 Prohibited attachment type (was 0xdeadbeef) Ray Lee
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200407071413.18608.rjwysocki@sisk.pl \
--to=rjwysocki@sisk.pl \
--cc=linux-kernel@vger.kernel.org \
--cc=root@chaos.analogic.com \
--cc=tomstdenis@yahoo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®