我有一个.cpp文件,该文件在多个地方的使用情况 NULL 。当我尝试在Windows计算机+独立工具链上使用clang ++编译适用于Android / x86平台的cpp文件时,在使用 NULL 的地方遇到“预期表达式”错误。我在Android NDK提供的clang标头的stddef.h中找到 NULL 的定义。
#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
据我所知,__null
特定于GNU编译器。在我的情况下,_MSC_VER和__MINGW32__
均未定义,因为我正在使用clang ++和独立工具链针对Android平台进行编译。因此它进入了define NULL __null
。由于clang ++不知道__null
是什么,因此会导致“预期表达式”错误。
我的问题是,为什么clang使用GNU编译器提供的宏(例如__null
)?还是我在这里想念东西?
请有人帮我理解。谢谢