diff --git a/util/gflags_compat.h b/util/gflags_compat.h index c12c7e2af..b6f88a5bc 100644 --- a/util/gflags_compat.h +++ b/util/gflags_compat.h @@ -6,6 +6,8 @@ #pragma once #include +#include + #ifndef GFLAGS_NAMESPACE // in case it's not defined in old versions, that's probably because it was // still google by default. @@ -16,10 +18,13 @@ // DEFINE_uint32 does not appear in older versions of gflags. This should be // a sane definition for those versions. #include -#define DEFINE_uint32(name, val, txt) \ - namespace gflags_compat { \ - DEFINE_int32(name, val, txt); \ - } \ - uint32_t &FLAGS_##name = \ - *reinterpret_cast(&gflags_compat::FLAGS_##name); -#endif +#define DEFINE_uint32(name, val, txt) \ + namespace gflags_compat { \ + DEFINE_int32(name, val, txt); \ + } \ + std::reference_wrapper FLAGS_##name = \ + std::ref(*reinterpret_cast(&gflags_compat::FLAGS_##name)); + +#define DECLARE_uint32(name) \ + extern std::reference_wrapper FLAGS_##name; +#endif // !DEFINE_uint32