搜索
bottom↓
回复: 16

好用的参数解析工具---cmdParse

[复制链接]
(35863115)

出0入0汤圆

发表于 2020-2-23 18:48:11 | 显示全部楼层 |阅读模式
cmdParse是一个替代getopt/getopt_long的工具函数,用于简洁高效的解析命令行参数。

作者的工作是开发驱动程序,其中很重要的一部分内容就是编写测试工具,为了使得这些工具命令用起来灵活方便,就需要设计各种命令参数。开始也是用的getopt/getopt_long函数来解析的,用了一段时间发现当参数比较多比较复杂时这两个函数用起来很繁琐低效,于是就萌生了自己写一个解析工具的想法。

命令参数的目的大部分是用来获取一个新的参数值,解析这个参数值的方法无非就是常用的那几种,而getopt需要用户自己写这些重复无趣的代码来完成。cmdParse的一个很大的优点就是直接通过指定数据类型和目标地址就可以完成这些工作,简洁高效。对于一些需要特殊处理的参数或动作执行,则可以通过注册回调函数来实现。另外一个好处就是编写完选项列表的时候其实也就完成了帮助命令的设计,使用通用选项-help就会输出命令的选项列表信息。

特性
  • 参数值可直接自动解析获取。
  • 可注册回调函数来完成需要特殊处理的参数或动作执行。
  • 具备通用的-help选项,统一输出命令选项列表信息。
  • 整个模块没有全局或静态数据,完全可重入。
  • 和操作系统无关,在裸机平台上也可使用。
  • 参数解析本身可调试,命令行末尾加“!”,可以输出参数解析信息。
  • 选项名不区分短选项或长从选项,可以是任意字符串。
  • 可以设置选项强制有效,即便命令行中没有输入该选项。
  • 按照选项列表的顺序执行选项。



源码及使用说明请稍等或另行百度。




(35861373)

出0入102汤圆

发表于 2020-2-23 19:17:13 | 显示全部楼层
学习一下
(35859304)

出0入0汤圆

发表于 2020-2-23 19:51:42 | 显示全部楼层
记号一下,留待参考。
(35858941)

出0入88汤圆

发表于 2020-2-23 19:57:45 来自手机 | 显示全部楼层
本帖最后由 dukelec 于 2020-2-23 20:04 编辑

我自己寫過一個,特點是非常簡單易用,
見文章尾部 CDARGS 介紹,支持 C 和 Python:
http://blog.dukelec.com/cdipc-zh

C 版本代碼在以下連接,cdargs.c 和 .h 文件:
https://github.com/dukelec/cdipc/tree/master/cdipc/utils

Python 版本:
https://github.com/dukelec/cdipc ... s/python/cd_args.py
(35857882)

出0入0汤圆

 楼主| 发表于 2020-2-23 20:15:24 | 显示全部楼层
dukelec 发表于 2020-2-23 19:57
我自己寫過一個,特點是非常簡單易用,
見文章尾部 CDARGS 介紹,支持 C 和 Python:
http://blog.dukelec. ...

兄台,冒昧的问一下,你为啥用繁体字?是台湾或香港的朋友吗?
(35857361)

出0入0汤圆

 楼主| 发表于 2020-2-23 20:24:05 | 显示全部楼层
dukelec 发表于 2020-2-23 19:57
我自己寫過一個,特點是非常簡單易用,
見文章尾部 CDARGS 介紹,支持 C 和 Python:
http://blog.dukelec. ...

大概看了下,基于链表实现的,实现不算复杂,功能也比得上getopt,赞一个。
(35853344)

出0入0汤圆

发表于 2020-2-23 21:31:02 来自手机 | 显示全部楼层
都是大牛,学习一下
(35844295)

出0入0汤圆

发表于 2020-2-24 00:01:51 | 显示全部楼层
一开始听着很炫,后来定睛一看,是代替getopt,好吧。。
我get不到这个点啊。。
真的没有兴趣。。
(35844049)

出0入0汤圆

发表于 2020-2-24 00:05:57 来自手机 | 显示全部楼层
收藏了,学习下
(35808386)

出0入0汤圆

发表于 2020-2-24 10:00:20 | 显示全部楼层
收藏了,学习下
(35802973)

出0入0汤圆

 楼主| 发表于 2020-2-24 11:30:33 | 显示全部楼层
kinsno 发表于 2020-2-24 00:01
一开始听着很炫,后来定睛一看,是代替getopt,好吧。。
我get不到这个点啊。。
真的没有兴趣。。

就好比功能机是手机,智能机也是手机,都是手机但更好用更方便。但终究还是个手机,确实没有汽车的功能啊。
(35802854)

出0入0汤圆

 楼主| 发表于 2020-2-24 11:32:32 | 显示全部楼层
可以看一下例程源码,看看实现同样功能用getopt是否会繁琐一些。
cmdParseExample.c源码
https://www.amobbs.com/thread-5727947-1-1.html
(出处: amoBBS 阿莫电子论坛)
(35799210)

出0入0汤圆

发表于 2020-2-24 12:33:16 来自手机 | 显示全部楼层
大牛,感谢!
(35507487)

出0入0汤圆

发表于 2020-2-27 21:35:19 | 显示全部楼层
提取参数?
(34987251)

出0入4汤圆

发表于 2020-3-4 22:05:55 | 显示全部楼层
留个脚印!
(34955224)

出0入0汤圆

发表于 2020-3-5 06:59:42 来自手机 | 显示全部楼层
留个脚印!
(34952854)

出0入0汤圆

发表于 2020-3-5 07:39:12 | 显示全部楼层
[NO.1]世界上最好用的参数解析工具---cmdParse

https://blog.csdn.net/ScilogyHun ... _relevant.none-task
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2021-4-13 20:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表