Expose default help printer function (#1425)

* Pass the default help string into custom help printer

Improves #1329.

* Expose default help printer
diff --git a/include/benchmark/benchmark.h b/include/benchmark/benchmark.h
index 58a8a30..b25b001 100644
--- a/include/benchmark/benchmark.h
+++ b/include/benchmark/benchmark.h
@@ -291,8 +291,10 @@
 namespace benchmark {
 class BenchmarkReporter;
 
+BENCHMARK_EXPORT void PrintDefaultHelp();
+
 BENCHMARK_EXPORT void Initialize(int* argc, char** argv,
-                                 void (*HelperPrinterf)() = NULL);
+                                 void (*HelperPrinterf)() = PrintDefaultHelp);
 BENCHMARK_EXPORT void Shutdown();
 
 // Report to stdout all arguments in 'argv' as unrecognized except the first.
diff --git a/src/benchmark.cc b/src/benchmark.cc
index 254b95e..88167f6 100644
--- a/src/benchmark.cc
+++ b/src/benchmark.cc
@@ -567,28 +567,7 @@
 void (*HelperPrintf)();
 
 void PrintUsageAndExit() {
-  if (HelperPrintf) {
-    HelperPrintf();
-  } else {
-    fprintf(stdout,
-            "benchmark"
-            " [--benchmark_list_tests={true|false}]\n"
-            "          [--benchmark_filter=<regex>]\n"
-            "          [--benchmark_min_time=<min_time>]\n"
-            "          [--benchmark_min_warmup_time=<min_warmup_time>]\n"
-            "          [--benchmark_repetitions=<num_repetitions>]\n"
-            "          [--benchmark_enable_random_interleaving={true|false}]\n"
-            "          [--benchmark_report_aggregates_only={true|false}]\n"
-            "          [--benchmark_display_aggregates_only={true|false}]\n"
-            "          [--benchmark_format=<console|json|csv>]\n"
-            "          [--benchmark_out=<filename>]\n"
-            "          [--benchmark_out_format=<json|console|csv>]\n"
-            "          [--benchmark_color={auto|true|false}]\n"
-            "          [--benchmark_counters_tabular={true|false}]\n"
-            "          [--benchmark_context=<key>=<value>,...]\n"
-            "          [--benchmark_time_unit={ns|us|ms|s}]\n"
-            "          [--v=<verbosity>]\n");
-  }
+  HelperPrintf();
   exit(0);
 }
 
@@ -670,6 +649,27 @@
 
 }  // end namespace internal
 
+void PrintDefaultHelp() {
+  fprintf(stdout,
+          "benchmark"
+          " [--benchmark_list_tests={true|false}]\n"
+          "          [--benchmark_filter=<regex>]\n"
+          "          [--benchmark_min_time=<min_time>]\n"
+          "          [--benchmark_min_warmup_time=<min_warmup_time>]\n"
+          "          [--benchmark_repetitions=<num_repetitions>]\n"
+          "          [--benchmark_enable_random_interleaving={true|false}]\n"
+          "          [--benchmark_report_aggregates_only={true|false}]\n"
+          "          [--benchmark_display_aggregates_only={true|false}]\n"
+          "          [--benchmark_format=<console|json|csv>]\n"
+          "          [--benchmark_out=<filename>]\n"
+          "          [--benchmark_out_format=<json|console|csv>]\n"
+          "          [--benchmark_color={auto|true|false}]\n"
+          "          [--benchmark_counters_tabular={true|false}]\n"
+          "          [--benchmark_context=<key>=<value>,...]\n"
+          "          [--benchmark_time_unit={ns|us|ms|s}]\n"
+          "          [--v=<verbosity>]\n");
+}
+
 void Initialize(int* argc, char** argv, void (*HelperPrintf)()) {
   internal::ParseCommandLineFlags(argc, argv);
   internal::LogLevel() = FLAGS_v;