Something like that. It makes the following invalid in C++ but valid in C:
int *ptr = NULL; int *ptr = NULL; #ifdef __cplusplus
#define __DARWIN_NULL __null
#else /* ! __cplusplus */
#define __DARWIN_NULL ((void *)0)
#endif /* __cplusplus */
So the code you mentioned works just fine in C++.