Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms

Andrew Cagney
2003-04-10T17:45:49Z

> Daniel Jacobowitz <drow@mvista.com> writes:
>
> |> On Thu, Apr 10, 2003 at 05:16:05PM +0200, Andreas Schwab wrote:
> |> > Andrew Cagney <ac131313@redhat.com> writes:
> |> >
> |> > |> > args[i] = 1;
> |> > |> >> - res = pthread_create(&threads[i], NULL, thread_function, (void *)i);
> |> > |> >>
> |> > |>
> |> > |> Try:
> |> > |>
> |> > |> (((char *) NULL) + i)
> |> > |>
> |> > |> and what ever the reverse of that is ....
> |> >
> |> > That is even less portable than the above.
> |>
> |> Really? What's non-portable about it?
>
> NULL is not an object, and the C standard does not define any meaning for
> the above expression. On the other hand, the effect of a cast from
> integer to pointer is implementation-defined (although it might trap).

What about this then:

static char *null_char_pointer = NULL;

(null_char_pointer + i)

and:

(i - null_char_pointer)

:-)