On Fri, Nov 10, 2006 at 02:32:10PM -0800, Howard Chu wrote:
>
> With the previous example, if alias1.c was instead:
>
> ####
> #include <stdio.h>
>
> extern void getit( void **arg );
>
> main() {
> union {
> int *foo;
> void *bar;
> } u;
>
> getit( &u.bar );
> printf("foo: %x\n", *u.foo);
> }
> ####
>
> gcc no longer complains, but according to the spec, the code is not any
> more reliable.
As far as I know, memcpy() is the answer:
#include <stdio.h>
#include <string.h>
extern void getit (void **arg);
int main ()
{
int *foo;
void *bar;
getit (&bar);
memcpy (&foo, &bar, sizeof (foo));
printf ("foo: %x\n", *foo);
return (0);
}
--
Rask Ingemann Lambertsen