Skip to content
Snippets Groups Projects
Commit 08e46f97 authored by Nico Weber's avatar Nico Weber
Browse files

Let NULL and MSVC headers coexist better.

Fixes the two issues mentioned in PR12146.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155490 91177308-0d34-0410-b5e6-96231b3b80d8
parent 5482dc3a
No related branches found
No related tags found
No related merge requests found
......@@ -43,10 +43,13 @@ typedef __WCHAR_TYPE__ wchar_t;
#undef NULL
#ifdef __cplusplus
#undef __null // VC++ hack.
#define NULL __null
# if !defined(__MINGW32__) && !defined(_MSC_VER)
# define NULL __null
# else
# define NULL 0
# endif
#else
#define NULL ((void*)0)
# define NULL ((void*)0)
#endif
#define offsetof(t, d) __builtin_offsetof(t, d)
......
// RUN: %clang -fsyntax-only -target i686-pc-win32 %s
// RUN: %clang -fsyntax-only -target i386-mingw32 %s
// Something in MSVC's headers (pulled in e.g. by <crtdefs.h>) defines __null
// to something, mimick that.
#define __null
#include <stddef.h>
// __null is used as a type annotation in MS headers, with __null defined to
// nothing in regular builds. This should continue to work even with stddef.h
// included.
void f(__null void* p) { }
// NULL should work fine even with __null defined to nothing.
void* p = NULL;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment