static const struct option options[] = {
{"help" , no_argument , NULL, 'h'},
{"output" , required_argument, NULL, 'o'},
{"level" , required_argument, NULL, 'l'},
{"size" , required_argument, NULL, 's'},
{"symversion" , required_argument, NULL, 'v'},
{"margin" , required_argument, NULL, 'm'},
{"structured" , no_argument , NULL, 'S'},
{"kanji" , no_argument , NULL, 'k'},
{"casesensitive", no_argument , NULL, 'c'},
{"ignorecase" , no_argument , NULL, 'i'},
{"8bit" , no_argument , NULL, '8'},
{"version" , no_argument , NULL, 'V'},
{NULL, 0, NULL, 0}
};
它声明了一个数组options,元素的类型是一个静态结构常量。
static const 静态常变量
struct option 变量类型
options[]变量名
struct option {
const char *name; //name表示的是长参数名
int has_arg;
//has_arg有3个值,no_argument(或者是0),表示该参数后面不跟参数值
// required_argument(或者是1),表示该参数后面一定要跟个参数值
// optional_argument(或者是2),表示该参数后面可以跟,也可以不跟参数值
int *flag;
//用来决定,getopt_long()的返回值到底是什么。如果这个指针为NULL,
//那么getopt_long()返回该结构val字段中的数值。如果该指针不为NULL,
//getopt_long()会使得它所指向的变量中填入val字段中的数值,并且getopt_long()返回0。
//如果flag不是NULL,但未发现长选项,那么它所指向的变量的数值不变。
int val;
//和flag联合决定返回值 这个值是发现了长选项时的返回值,
//或者flag不是 NULL时载入*flag中的值。典型情况下,若flag不是NULL,
//那么val是个真/假值,譬如1 或0;另一方面,如 果flag是NULL,那么val通常是字符常量,
//若长选项与短选项一致,那么该字符常量应该与optstring中出现的这个选项的参数相同。
}