summaryrefslogtreecommitdiff
path: root/abseil-cpp/absl/flags/declare.h
diff options
context:
space:
mode:
Diffstat (limited to 'abseil-cpp/absl/flags/declare.h')
-rw-r--r--abseil-cpp/absl/flags/declare.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/abseil-cpp/absl/flags/declare.h b/abseil-cpp/absl/flags/declare.h
index b9794d8..d1437bb 100644
--- a/abseil-cpp/absl/flags/declare.h
+++ b/abseil-cpp/absl/flags/declare.h
@@ -60,6 +60,14 @@ ABSL_NAMESPACE_END
// The ABSL_DECLARE_FLAG(type, name) macro expands to:
//
// extern absl::Flag<type> FLAGS_name;
-#define ABSL_DECLARE_FLAG(type, name) extern ::absl::Flag<type> FLAGS_##name
+#define ABSL_DECLARE_FLAG(type, name) ABSL_DECLARE_FLAG_INTERNAL(type, name)
+
+// Internal implementation of ABSL_DECLARE_FLAG to allow macro expansion of its
+// arguments. Clients must use ABSL_DECLARE_FLAG instead.
+#define ABSL_DECLARE_FLAG_INTERNAL(type, name) \
+ extern absl::Flag<type> FLAGS_##name; \
+ namespace absl /* block flags in namespaces */ {} \
+ /* second redeclaration is to allow applying attributes */ \
+ extern absl::Flag<type> FLAGS_##name
#endif // ABSL_FLAGS_DECLARE_H_