Andrew Pinski wrote:
>
> On Jul 5, 2006, at 2:36 AM, Yuri Pudgorodsky wrote:
>
>> 1) with direct cast: (int (*)(int)) foo
>> - warn/trap since 3.x
>> 2) with cast through void fptr: (int (*)(int)) (int(*)()) foo
>> - warn/trap since 4.2 current
>
> I don't see why you are invoking this undefined behavior anyways.
> What are you trying to do?  I don't see how this can ever work really
> anyways even if since most targets don't pass arguments via the stack.
> Yes x86 will most likely work but nothing else, even x86_64 will not work
> as floating point is passed via the SSE registers.
>
> -- Pinski

As I said, that is in openssl code - they have macros casting function
pointers
to args with different pointer type - e.g. foo(...., char * p, ....) ->
foo(....,struct bar *p, ....).

For some obsure reason, they prefer doing that instead of casting the
calling args itself
(for type safety, e.g compile-time time check of function args?)



Reply via email to