aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/google/protobuf/wire_format_lite.cc
diff options
context:
space:
mode:
authorGravatar Bruce Dawson <brucedawson@chromium.org>2015-10-29 12:41:29 -0700
committerGravatar Bruce Dawson <brucedawson@chromium.org>2015-10-29 13:04:18 -0700
commit86ba70ec411fa3aafc8393700e5f085c89f6c992 (patch)
tree22ad6b4255e4860be3f620839512f976ea9e30b4 /src/google/protobuf/wire_format_lite.cc
parent86f6f53db382154af558fe43294840beec414dc0 (diff)
Get VS 2015 to use const int definitions
VC++ up to VS 2015 RTM does not require explicit storage allocation for static const integers declared in classes. VS 2015 Update 1 requires these storage definitions in some cases. It's unclear exactly what cases - simple tests work with and without the explicit storage allocation. Many previous versions of VC++ have theoretically *allowed* a definition to supply storage, but tests on VC++ 2013 show that this doesn't actually work correctly - it leads to duplicate definition errors in Chromium. So, the change is scoped to VS 2015 only. This change also updates the generated files to match the new generator. TL;DR - this change is necessary in order for Chromium to build with VS 2015 Update 1.
Diffstat (limited to 'src/google/protobuf/wire_format_lite.cc')
-rw-r--r--src/google/protobuf/wire_format_lite.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/google/protobuf/wire_format_lite.cc b/src/google/protobuf/wire_format_lite.cc
index 847e3500..7f1093c8 100644
--- a/src/google/protobuf/wire_format_lite.cc
+++ b/src/google/protobuf/wire_format_lite.cc
@@ -49,8 +49,10 @@ namespace google {
namespace protobuf {
namespace internal {
-#ifndef _MSC_VER // MSVC doesn't like definitions of inline constants, GCC
- // requires them.
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+// Old version of MSVC doesn't like definitions of inline constants, GCC
+// requires them.
const int WireFormatLite::kMessageSetItemStartTag;
const int WireFormatLite::kMessageSetItemEndTag;
const int WireFormatLite::kMessageSetTypeIdTag;