使用 getopt_long_only() 解析命令行参数。
选项设置
shortopts 短选项
字符串,指定可接受的短选项。
- 单个字符:不带参数的选项
- 单个字符 +
::带参数的选项 - 单个字符 +
:::可带也可不带参数的选项
如
ab: 支持两个单选项-a、-b,且不带参数a:b:支持一个带参数的选项-a value和一个不带参数的选项-ba::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 |
|