diff --git a/clang/lib/Headers/stddef.h b/clang/lib/Headers/stddef.h --- a/clang/lib/Headers/stddef.h +++ b/clang/lib/Headers/stddef.h @@ -62,7 +62,7 @@ #endif /* defined(__need_STDDEF_H_misc) */ #if defined(__need_wchar_t) -#ifndef __cplusplus +#if !defined(__cplusplus) || (defined(_MSC_VER) && !_NATIVE_WCHAR_T_DEFINED) /* Always define wchar_t when modules are available. */ #if !defined(_WCHAR_T) || __has_feature(modules) #if !__has_feature(modules) diff --git a/clang/test/Headers/ms-no-wchar.cpp b/clang/test/Headers/ms-no-wchar.cpp new file mode 100644 --- /dev/null +++ b/clang/test/Headers/ms-no-wchar.cpp @@ -0,0 +1,6 @@ +// RUN: %clang_cc1 -fsyntax-only -triple x86_64-pc-windows-msvc -fms-compatibility-version=17.00 -fno-wchar %s +// MSVC defines wchar_t instead of using the builtin if /Zc:wchar_t- is passed + +#include + +wchar_t c;