gflag使用

#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;
}
原文地址:https://www.cnblogs.com/taiyang-li/p/8085571.html