This is the mail archive of the
libc-help@sourceware.org
mailing list for the glibc project.
Re: parenthesis while addressing struct member
- From: "Carlos O'Donell" <carlos at systemhalted dot org>
- To: JoÃl KrÃhemann <weedlight at gmail dot com>
- Cc: "libc-help at sourceware dot org" <libc-help at sourceware dot org>
- Date: Sat, 26 Jul 2014 13:19:06 -0400
- Subject: Re: parenthesis while addressing struct member
- Authentication-results: sourceware.org; auth=none
- References: <53D3C580 dot 30407 at gmail dot com>
On Sat, Jul 26, 2014 at 11:13 AM, JoÃl KrÃhemann <weedlight@gmail.com> wrote:
> I experienced problems as not using parenthesis with addressing operator.
> Does someone know what's correct?
>
> pthread_mutex_lock.c
>
> int e = INTERNAL_SYSCALL (futex, __err, 4,
> &mutex->__data.__lock,
> __lll_private_flag (FUTEX_LOCK_PI,
> private), 1, 0);
>
> ags_thread-posix.c
>
> pthread_mutex_init(&(thread->timelock_mutex), NULL);
They are both the same.
The -> and . have precedence over & with left-to-right associativity.
Therefore &(struct->member) is equivalent to &struct->member.
Only () can change this e.g. *(ptr[x]) is not equivalent (*ptr)[x].
Cheers,
Carlos.