#include <gflags/gflags.h>
#include <iostream>
// 声明全局flag
DEFINE_bool(my_bool, false, "bool flag");
DEFINE_int32(my_int32, 1, "int32 flag");
DEFINE_int64(my_int64, 2, "int64 flag");
DEFINE_uint64(my_uint64, 3, "uint64 flag");
DEFINE_double(my_double, 4.0, "double flag");
DEFINE_string(my_string, "5", "string flag");
int main(int argc, char* argv[])
{
// 设置版本号 可通过./argv[0] --version查看
google::SetVersionString("1.3.1");
// 解析命令行参数
// 如果参数3是true的话 该函数会将选项及其对应参数删除
// 否则选项及其参数将被保留, 并且不带选项的参数将被重新排列到末尾
// 比如 ./foo a b --my_bool c d
// 如果参数3为true, 该函数执行之后, argv为./foo a b c d, argc=5
// 如果参数3为false, 该函数执行之后,argv为./foo --my_bool a b c d, argc=6
google::ParseCommandLineFlags(&argc, &argv, false);
// bool值flag
std::cout << FLAGS_my_bool << std::endl;
// int32类型的flag
std::cout << FLAGS_my_int32 << std::endl;
// int64类型的flag
std::cout << FLAGS_my_int64 << std::endl;
// uint64类型的flag
std::cout << FLAGS_my_uint64 << std::endl;
// double类型的flag
std::cout << FLAGS_my_double << std::endl;
// string类型的flag
std::cout << FLAGS_my_string << std::endl;
return 0;
}