Clears a weak reference to a
weak_pointer_location must not be
If the weak reference is
NULL then this function does nothing.
Otherwise, the weak reference to the object is removed for that location
and the pointer is set to
A macro is also included that allows this function to be used without pointer casts. The function itself is static inline, so its address may vary between compilation units.