Explorar o código

Merge pull request #749 from xfxyjwf/mingw_endian

Assume LITTLE_ENDIAN for windows build
Feng Xiao %!s(int64=10) %!d(string=hai) anos
pai
achega
047a97ff44
Modificáronse 1 ficheiros con 5 adicións e 2 borrados
  1. 5 2
      src/google/protobuf/stubs/port.h

+ 5 - 2
src/google/protobuf/stubs/port.h

@@ -45,12 +45,15 @@
 #endif
 #endif
 
 
 #undef PROTOBUF_LITTLE_ENDIAN
 #undef PROTOBUF_LITTLE_ENDIAN
-#ifdef _MSC_VER
+#ifdef _WIN32
   // Assuming windows is always little-endian.
   // Assuming windows is always little-endian.
+  // TODO(xiaofeng): The PROTOBUF_LITTLE_ENDIAN is not only used for
+  // optimization but also for correctness. We should define an
+  // different macro to test the big-endian code path in coded_stream.
   #if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
   #if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
     #define PROTOBUF_LITTLE_ENDIAN 1
     #define PROTOBUF_LITTLE_ENDIAN 1
   #endif
   #endif
-  #if _MSC_VER >= 1300
+  #if defined(_MSC_VER) && _MSC_VER >= 1300
     // If MSVC has "/RTCc" set, it will complain about truncating casts at
     // If MSVC has "/RTCc" set, it will complain about truncating casts at
     // runtime.  This file contains some intentional truncating casts.
     // runtime.  This file contains some intentional truncating casts.
     #pragma runtime_checks("c", off)
     #pragma runtime_checks("c", off)