Gflags中是否有与Python argparse的dest属性等效的功能?
Gflags 实现类似 Python ArgumentParser dest 属性的功能
Gflags 支持通过标志别名实现命令行友好名称与代码内部变量名分离的需求,完全对应你提到的 Python ArgumentParser dest 属性的作用。
具体实现步骤:
- 先用
DEFINE_*宏定义代码内部使用的变量(比如is_debug) - 再用
DEFINE_alias宏给该变量绑定一个命令行端的友好名称(比如debug)
示例代码:
#include <gflags/gflags.h> #include <iostream> // 定义代码内部用的变量 DEFINE_bool(is_debug, false, "开启调试模式(内部变量名:is_debug)"); // 给is_debug绑定命令行别名debug DEFINE_alias(debug, is_debug); int main(int argc, char** argv) { gflags::ParseCommandLineFlags(&argc, &argv, true); // 代码内部直接使用FLAGS_is_debug if (FLAGS_is_debug) { std::cout << "调试模式已开启" << std::endl; } else { std::cout << "运行于发布模式" << std::endl; } return 0; }
使用时,用户在命令行可以输入两种方式:
./your_app --debug(友好的前端名称)./your_app --is_debug(内部变量名,也可直接使用)
查看帮助信息(./your_app --help)时,会同时显示别名与原变量名,不会造成混淆。
注意事项:
DEFINE_alias必须在对应的DEFINE_*宏之后定义- 别名与原变量名指向同一内存空间,修改其中一个会同步影响另一个
内容的提问来源于stack exchange,提问作者jxramos
相关产品推荐
相关产品推荐

