]> granicus.if.org Git - clang/commitdiff
Work-around wchar_t and __pragma problem in VC headers
authorJohn Thompson <John.Thompson.JTSoftware@gmail.com>
Fri, 16 Oct 2009 01:12:00 +0000 (01:12 +0000)
committerJohn Thompson <John.Thompson.JTSoftware@gmail.com>
Fri, 16 Oct 2009 01:12:00 +0000 (01:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84227 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Frontend/InitPreprocessor.cpp

index 0f3b4b8236bef2ecedee306e5c9398865bb932e3..2c16da0b99987d27abea53fa56726d2bdd2bbb75 100644 (file)
@@ -317,13 +317,22 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
     DefineBuiltinMacro(Buf, "_GNU_SOURCE=1");
   }
 
-  // Filter out some microsoft extensions when trying to parse in ms-compat
-  // mode.
   if (LangOpts.Microsoft) {
+    // Filter out some microsoft extensions when trying to parse in ms-compat
+    // mode.
     DefineBuiltinMacro(Buf, "__int8=__INT8_TYPE__");
     DefineBuiltinMacro(Buf, "__int16=__INT16_TYPE__");
     DefineBuiltinMacro(Buf, "__int32=__INT32_TYPE__");
     DefineBuiltinMacro(Buf, "__int64=__INT64_TYPE__");
+    // Work around some issues with Visual C++ headerws.
+    if (LangOpts.CPlusPlus) {
+      // Since we define wchar_t in C++ mode.
+      DefineBuiltinMacro(Buf, "_WCHAR_T_DEFINED=1");
+      DefineBuiltinMacro(Buf, "_NATIVE_WCHAR_T_DEFINED=1");
+      // FIXME:  This should be temporary until we have a __pragma
+      // solution, to avoid some errors flagged in VC++ headers.
+      DefineBuiltinMacro(Buf, "_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES=0");
+    }
   }
 
   if (LangOpts.Optimize)