💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
默认情况下,main函数是一个程序的入口函数,而我们可以给程序传入一系列的参数列表,这个列表可以在main函数中被解析;这就需要main函数是带参的方式使用了,基本写法:int main(int argc, char \*argv\[\])。 ### main函数参数列表的解析,需要包含一个头文件:#include <getopt.h>,利用该头文件提供的接口,我们需要理解几个地方即可, ### **1.结构体:** ``` struct option { const char *name; // 选项(参数)名 int has_arg; // 是否选项后有参数,常用取值如下: // required_argument,no_argument int *flag; // NULL时返回val,使用时保持NULL就可以了。 int val; // 返回值,需和flag配合。 }; ### ``` **2\. 外部变量:** ``` extern char *optarg; // 当前选项对应的参数值。 ``` ### **3\. 函数(结合例子看):** ``` int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex); ``` ### **4.还有就是选项字符串:** 字符加冒号,比如:"p:n:v::th",说明: * 1.字符加一个冒号表示选项后面必须加一个参数,选项和参数用空格隔开。 * 2.单个字符后跟两个冒号,表示该选项后可以跟一个参数,也可以不跟,如果后边跟一个参数,参数必须紧跟在选项后不能以空格隔开。 * 3.单个字符,表示选项,后面不能带参数。 ### 例子(模板),选项必须再opts中找得到: ![](https://img.kancloud.cn/1f/fa/1ffa043aee91c6cf98a8dc51bc14d8ef_832x734.png =600x) ### 编译运行如下: ![](https://img.kancloud.cn/2b/1b/2b1bfd470e8c3a24e42048998a4ddb90_832x234.png =600x)