http://blog.chinaunix.net/uid-784937-id-2553410.html
GNU libc提供了getopt和getopt_long用于解析命令行参数,很好用,想在windows下使用,就google了几个win32下的C/C++写得getopt,并作了一些比较。
程序里往往会有许多开关的,运行时就要传入许多参数值来打开或关闭这些开关。以前,每写一个程序就要花一些精力来写这段代码,因为是给自己用,就比较偷懒,写得很丑陋,时间长了,自己再回过头来用自己的东西的时候,心里骂了一遍又一遍,真tmd挫。
最近终于无可忍受了,决定自己写一个解析命令行参数的函数。但本着不重复制造车轮的哲学(其实是想偷懒:)),于是google了一把getopt。找到几个windows下可以用的getopt程序:
Pete Wilson写的getopt 行为和GNU libc中的getopt一样。可惜没有提供getopt_long的win32版本。编译这个程序要打开宏WIN32。
free getopt 宣称是独立于系统的。也没有提供getopt_long。与GNU libc的getopt行为有一些区别,比如
>test in1 in2 -o out
这里in1不会被解析。
>test in2 in1 -o out
这里in2不会被解析。
FreeDOS下的GETOPT_L 用/作为选项的前缀,用=给选项赋值,支持长参数。不过会将某个non-option argument后面所有的arguments视为一个non-option argument,比如
>test.exe yan /x=xie
这里"yan /x=xie"会被当作一个non-option参数。
xgetopt getopt的桌面demo程序。不支持长参数。也会将某个non-option argument后面所有的arguments视为一个non-option argument。