This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Re: casts to a type other than an integral or enumerationtype in a constant-expression


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]