[ECOS] Re: casts to a type other than an integral or enumeration type in a constant-expression
Jonathan Larmour
jifl@eCosCentric.com
Thu Feb 13 13:22:00 GMT 2003
Nathan Sidwell wrote:
> 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)
Indeed it's like that. But the whole thing is cast to an int, so the
expression as a whole has integral type. From the C++ standard 6.4.2 para
2 that's all that's required, the way I read it. Having a non-integral
type in an intermediate stage should make no difference.
Jifl
--
eCosCentric http://www.eCosCentric.com/ The eCos and RedBoot experts
--[ "You can complain because roses have thorns, or you ]--
--[ can rejoice because thorns have roses." -Lincoln ]-- Opinions==mine
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss
More information about the Ecos-discuss
mailing list