免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2318 | 回复: 7
打印 上一主题 下一主题

[C] 疑问 getopt [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-28 20:27 |只看该作者 |倒序浏览
看到好像很多 实际项目 都不使用C库里面的  getopt而是自己实现 类似的函数
   是因为   windows下面没有这个函数  还是因为  效率或者其他原因?

论坛徽章:
0
2 [报告]
发表于 2009-10-30 11:24 |只看该作者
效率的原因不算什么,因为一个程序的参数解析,只占程序很小的一部分,不在意这点效率。

我想,主要的原因是,这个函数族,并不是所有的C库都支持的。我在做跨平台开发的时候,就发现windows下面没有,不得不自己实现。于是还得一个宏来判断,是否有这个函数,如果有,就用,没有,用自己实现的。搞得这么麻烦,不如就用自己实现的了,呵呵!

论坛徽章:
0
3 [报告]
发表于 2009-10-30 11:52 |只看该作者
getopt
比如我一个参数是 aaa.xxx
可是我只想要 aaa 不想要 xxx
getopt 咋办?
直接自己判断并不复杂
而且,并不是总想要
case
case
case
这样的代码模式

论坛徽章:
0
4 [报告]
发表于 2009-10-30 12:57 |只看该作者
getopt
比如我一个参数是 aaa.xxx
可是我只想要 aaa 不想要 xxx
getopt 咋办?
直接自己判断并不复杂
而且,并不是总想要
case
case
case
这样的代码模式

使用getopt相当于一种契约,是对参数输入的一种契约。就好比main函数要求使用int main(int argc, char *argv[])一样。
或者可以称作参数制定规范。当然了,你不遵循规范,照样能写出好程序,就像不使用TCP/IP协议照样可以使用其他的网络协议一样。
只不过TCP/IP比较流行,比较成熟而已。这种契约的目的无非是在不影响使用(不会影响功能实现:就是其他方式能实现,它也能实现)的前提下,简化处理的麻烦而已。
假如不怕麻烦话,可以在程序中加入针对各种错误输入的纠正处理。

[ 本帖最后由 pagx 于 2009-10-30 13:01 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2009-10-30 13:33 |只看该作者
狼是 Getopt::Long 比较爽。

论坛徽章:
0
6 [报告]
发表于 2009-10-30 18:09 |只看该作者
原帖由 flw 于 2009-10-30 13:33 发表
狼是 Getopt::Long 比较爽。


你用perl当然爽咯。

论坛徽章:
0
7 [报告]
发表于 2009-10-30 20:51 |只看该作者
整成svn 那样的参数,getopt_long也应付不来

论坛徽章:
0
8 [报告]
发表于 2009-10-30 21:12 |只看该作者
getopt只是一函数而已,影响整体设计么?每个函数都不是万能的。我只是举例不适用的范围,没必要跟 goto一样吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP