This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Re: casts to a type other than an integral or enumerationtype in a constant-expression
- From: Nathan Sidwell <nathan at codesourcery dot com>
- To: Jonathan Larmour <jifl at eCosCentric dot com>
- Cc: Andreas Schwab <schwab at suse dot de>, fnf at intrinsity dot com, gcc-bugs at gcc dot gnu dot org, ecos-discuss at sources dot redhat dot com
- Date: Thu, 13 Feb 2003 12:48:48 +0000
- Subject: Re: [ECOS] Re: casts to a type other than an integral or enumerationtype in a constant-expression
- Organization: Codesourcery LLC
- References: <200302121853.h1CIrMoo006238@fred.ninemoons.com> <jeptpxw794.fsf@sykes.suse.de> <3E4ADFD1.9090703@eCosCentric.com>
Jonathan Larmour wrote:
|> case (int) SIG_DFL:
This code is completely bogus anyway, even if it might be valid. Casting
a pointer to int is dubious at best and will fail miserably if sizeof
(__sighandler_t) > sizeof (int).
Assuming I'm thinking of the right bit of code, Fred was paraphrasing
the code. The "int" is actually an eCos typedef set by the hardware
abstraction layer so _will_ be correct for the hardware.
The warning is certainly misleading at best as an int is certainly an
integral type ;-). From a quick read of the C++ standard, I can't see
any problem with this code.
the problem is SIG_DFL is probably,
typedef void (*__sighandler_t) (int);
#define SIG_DFL ((__sighandler_t)0)
I will change the eCos code to use if/else instead because I'd rather it
was compatible with the release of gcc since that isn't going to start
working for a while. But you gcc folks can fix the problem anyway :-).
not a g++ problem :)
nathan
--
Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC
The voices in my head said this was stupid too
nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss