在linux下,可以执行man getopt_long 来查看getopt_long的使用,getopt_long 支持长选项和短选项(例如:长选项 --help 短选项-h)
头文件:
#include <unistd.h>
函数声明:
int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);
argc:main函数中的第一个参数,命令行的参数个数,参数个数包含可执行文件。
argv[]: main函数中的第二个参数,命令行的具体参数,例如:./a.out 1 argv[0]就是”a.out:, argv[1] 就是"1"
longopts:结构 option中的指针。注意:数组的最后一个成员必须用0来填充,负责会出现段错误。
struct option {
//长选项的名称
const char *name;
//长选项是否有参数,如果该选项不接受参数,则为no_argument(或0);如果该选项需要参数,则为Required_argument(或1);或者optional_argument(或2),如果该选项为可选参数
int has_arg;
//指定如何返回长选项的结果。如果flag为NULL,则getopt_long()返回val 字符(例如,调用程序可以将val设置为等效的short选项)
例如:{ "help", no_argument, NULL, 'h' },如果输入长选项是--help getopt_long 则返回字符'h';
否则,getopt_long()返回0,标记指向一个变量,如果找到该选项,该变量将设置为val,但如果没有找到该选项,则保持不变
例如:{ "help", no_argument, &opt, '1' },如果输入长选项--help getopt_long 则返回0,opt的值是'1';
int *flag;
//根据falg的值来定,flag为空,val则返回,flag不为空,val值设置到flag中。
int val;
};
//如果longindex不是NULL,它指向一个变量,该变