使用 getopt_long_only()
解析命令行参数。
选项设置
shortopts
短选项
字符串,指定可接受的短选项。
- 单个字符:不带参数的选项
- 单个字符 +
:
:带参数的选项 - 单个字符 +
::
:可带也可不带参数的选项
如
ab
: 支持两个单选项-a
、-b
,且不带参数a:b
:支持一个带参数的选项-a value
和一个不带参数的选项-b
a::b
:支持一个可带可不带参数的选项-a
、-a value
和一个不带参数的选项-b
longopts
长选项
option 的数组,指定可接受的长选项。需以 {0,0,0,0}
结尾作为结束的标志。
1 | struct option |
name
:长选项名has_arg
:是否需要参数1
2
3flag
:设置结果存储方式- 非 NULL 时,解析到这个长选项时会把
val
值放入其指向的内存 - 如果不需要,则设置为 NULL
- 非 NULL 时,解析到这个长选项时会把
val
:解析返回值(flag
为 NULL ),或者要设置的值(flag
不为 NULL )flag
为 NULL 时,为getopt_long_only()
解析选项的返回值,用于区分不同的选项,一般给不同的选项设置不同的val
作为 ID。也可以设置为对应短选项的字符,用来匹配长选项和短选项flag
不为 NULL 时,把val
值放入其指向的内存
getopt_long_only()
解析一个 option,返回该 option 的 id,并将这个 option 的值存入 optarg 中。
1 |
|
输入参数:
argc
、argv
:主函数参数shortopts
:短选项字符串longopts
:长选项结构体数组longind
:返回长选项在longopts
中的索引值。一般只用于调试,正常情况输入NULL
即可。
返回值:
返回解析的这个 option 的 id
- 如果这个 option 是短选项,返回该短选项的字符
- 如果这个 option 是长选项
- 如果
flag
为 NULL,则返回val
值 - 如果
flag
不为 NULL,则返回 0,并将val
值放入flag
指针中
- 如果
- 解析完毕,返回 -1
示例
1 |
|