解析命令行参数的函数 (解析命令行参数)
本文目录导航:
解析命令行参数的函数
1.全局变量解释: optarg: 如果选项带参数,参数保存在optarg中。
如果选项带可选参数,而实际无参数时,optarg为NULL。

optind:argv数组中下一次需要处理的元素的下标,系统默认初始化此值为1. 0是没有意义的,argv[0]为程序名,在解析命令行参数中是没有意义的。
getopt正常解析完毕后,optind设置为argv数组中第一个不是选项的元素的下标(一般为0)。
opterr:存储错误选项字符.
2. GNU/Linux的命令行选项有两种类型: 短选项和长选项 ,前者以 - 作为前导符,后者以 -- 作为前导符。
-n 表示是一个不带参数的短选项。
--n 表示是一个不带参数的长选项。
现在有一个带有参数的短选项比如说 -w foo ,那么它和长选项 --foo 是等价的。
函数参数: :主函数传递过来的实参 :主函数传递过来的实参 :一个包含选项字符的字符串。 一组短选项组成的字符串
函数调用结果 1.该函数每解析完一个选项,就返回该选项字符。
选项字符解析完毕后,调用getopt函数将会返回-1,然后optind设置为argv数组中第一个不是选项的元素的下标。
2. 当调用getopt函数检测到错误时(比如说检测到的选项字符不在optstring实参中),默认情况下函数返回?。
为什么说是默认呢?因为如果通过optstring实参指明选项带参数,而实际命令行没有参数时,getopt返回 : 而不是 ?
关于optstring,还有几点说明: 1.如果选项带参数,该选项后接冒号,比如optstring这个实参值为a:b,指示a带参数,b没有参数;
2.如果选项带可选参数,该选项后接两个冒号,比如a::b,表明a可能有参数,也可能没有;
3.如果optstring的开头字符为:,表明如果指明选项带参数,而实际命令行没有参数时,getopt返回:而不是?(默认情况下返回 ? ,和无法识别的参数返回一样);
4.如果optstring的开头字符为+,表明一但遇到一个非选项参数,马上停止扫描,随后的部分当作参数来解释;
5.如果optstring的开头字符为-,表明如果遇到无选项参数,则把它当作选项1(不是字符1)的参数
运行示例:
函数参数: longops:指向一个option结构体数组的第一个元素。
longindex:getopt_long的最后一个参数longindex在函数返回时指向被搜索到的选项在longopts数组中的下标。
关于option struct如下:
注意在初始化option struct时:The last element of the array has to be filled with zeros.
函数返回值: 1.如果flag这个实参为null,那么这个函数返回val的值。
这样短选项字符解析和长选项解析搭建了桥梁。
2.如果flag这个实参不为null,那么这个函数返回0 3.选项字符解析完毕后,调用getopt_long函数将会返回-1 4.当调用getopt_long函数检测到错误时(比如说检测到的选项字符不在longops实参中),默认情况下函数返回?
运行示例如下:
getopt_long_only类似于getopt_long,但是它把 - 开头的选项当作长选项来处理。
如果该选项与长选项不匹配,而与短选项匹配,则可以作为短选项解析。
从编译到运行,轻松学会gflags库
gflags是一个由Google开源的库,提供简便的方式来定义全局变量,并允许通过命令行设置这些变量的值,广泛应用于项目和日常开发中。
本文将基于gflags官方文档,简洁明了地介绍如何使用此库。
构建依赖环境在具体阐述使用gflags库方法之前,需先了解如何利用构建依赖环境,以便跟随本篇指南进行实践体验。
首先,从github下载gflags:建立目录结构,确保文件位于正确位置:在文件中编写构建代码:完成上述步骤后,即可在文件中实现gflags示例。
使用gflags库的步骤如下:1. 通过DEFINE_XXX函数定义全局变量。
该函数本质上为宏,接口一致:DEFINE_XXX(name, val, txt)。
2. 在程序中使用DEFINE_XXX函数定义的变量时,需在变量前添加FLAGS_前缀。
例如,输出三个变量的默认值:编译运行后,结果将显示DEFINE_XXX函数中设置的默认值。
若需通过命令行设置变量值,需在main函数后添加::gflags::ParseCommandLineFlags函数,以解析argc、argv参数。
重新编译并运行程序,命令行输入格式如下:gflags支持四种命令行输入格式,以age变量为例:若非自行编写的程序,但知道其使用了gflags库,想查看定义的变量信息,则可以使用--helpshort选项查看变量相关详情。
若项目中使用了多个gflags定义的全局变量,分布在不同文件中,可使用--helpfull选项查看所有变量信息。
至此,gflags库的使用介绍完毕。
更多细节请参考官方文档和源码。
调环是什么意思?
调环是指计算机程序内部定义的一组参数值。
这组参数值可以调节程序的运行条件,从而影响程序的输出结果。
调环通常用于测试和调试程序,因为它可以帮助程序员在不同条件下模拟不同的输入数据,并观察程序的输出结果。
调环的作用非常重要,它可以帮助程序员快速定位程序的问题,并且优化程序的性能。
通过调节调环的参数值,程序员可以模拟出不同的运行环境,从而观察程序的运行情况。
如果程序不符合预期结果,程序员可以通过调节调环来排除不同的问题。
调环通常由程序员在程序的开发阶段预先设定,或者在运行程序时手动指定。
在许多编程语言中,调环通常使用全局变量或命令行参数来实现。
通过调节调环的参数值,程序员可以快速定位程序的问题,并对程序进行优化。
在程序的调试和测试过程中,调环非常重要,它可以帮助程序员更轻松地进行问题排查和修复。