At 05:02 PM 1/9/2003, Brad Nicholes wrote:
>The original problem that caused us to have to type cast is the fact
>that our compiler complains about the type mismatch between void* and
>unsigned long.  How does this resolve that issue?  It still looks like I
>am going to get a type mismatch.

The code below shouldn't.

typedef void*(*apr_atomic_casptr_fn_t)(void** mem, const void *cmp, const void 
*with);
#define apr_atomic_casptr ((apr_atomic_casptr_fn_t)(atomic_cmpxchg))

IFF the stack setup for the atomic_cmpxchg fn and the 
apr_atomic_casptr_fn_t typedefs are the same, you are 
still using a cast, but applying it to the fn itself.  The args
are still evaluated, but in terms of apr_atomic_casptr_fn_t's
declaration ;-)

See how the optional functions behave to get a little bit more
clarity about how/why we've coded functions this way.

Bill 

Reply via email to