简介:这几个函数是对相似于main函数那样传进来的参数进行解析。
参数的指定由-key value -key --key value --key -key value1 value2 这几种类型,其中getopt能够解决前两种类型,getopt_long可能解决所有类型的参数解析,getopt_long_only相似于getopt_long,能够解决所有选项。具体细节再前面的局部进行介绍。
首先介绍getopt选项,他是绝对比较简单的。函数原型: int getopt(int argc, char * const argv[], const char *optstring);argc和argv就是main函数传进来的参数,在这里就不多说了。optstring:此参数是指定咱们要解析的参数内容。eg:abc:(注,getopt函数只能解决带一个冒号的optstring)optind:是下一次调用getopt函数该当解决参数的小标,也就是argv要解决参数的下表。optarg:是带有一个冒号的optstringopterr:此选项决定是否将谬误音讯打印到规范谬误中,如果是0的话,就不打印谬误了。上面是一个例子和对应的输入。
接下来解说getopt_long函数,后面说过,此函数可能解决所有的参数函数原型: int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);此函数多了两个参数第一个参数构造如下。
struct option {
const char *name; int has_arg; int *flag; int val; };name:此局部代表长选项的名称。has_arg:此构造有几个宏为其赋值。 no_argument(0):代表没有对应的值 required_argument(1) :代表肯定须要一个值。 optional_argument(2):代表有没有对应的值都能够。 flag:如果此选项不为空的话,那么将参数对应的val赋值给flag,否则返回。 val:就是咱们要返回后者付给flag对应的value。longindex:如果此选项不为空的话,那么它将指向绝对于longopts对应的下标。上面是我给出的一个例子:和一些输入。
getopt_long_only与上述getopt_long不同之处:前者不论是“-”还是“--”都视为长选项,如果找不到的话,才去短选项哪里查找: