I have a .cpp file which has usage of NULL at several places. When I try to compile this cpp file for Android/x86 platform using clang++ on Windows machine + standalone tool chain, I am running into “expected expression” error at the places where NULL is used. I find the definition of NULL in stddef.h of clang headers provided by Android NDK as below.
#if defined(__need_NULL)
#undef NULL
#ifdef __cplusplus
# if !defined(__MINGW32__) && !defined(_MSC_VER)
# define NULL __null
# else
# define NULL 0
# endif
#else
# define NULL ((void*)0)
#endif
As far as I know, __null
is specific to GNU compiler. In my case both _MSC_VER and __MINGW32__
are undefined because I am compiling for Android platform using clang++ and standalone tool chain. So it is hitting into define NULL __null
. Since clang++ has no clue of what __null
is, it is resulting into “expected expression” error.
My question is, why is clang using macros(like __null
) provided by GNU compiler? Or am I missing something here?
Could somebody please help me understand. Thanks