添加的代码如下:
{
int retval;
int ti;//zjh
char *tm;
tm = nargv;
_DIAGASSERT(nargv != NULL);
_DIAGASSERT(options != NULL);
_DIAGASSERT(long_options != NULL);
/* idx may be NULL */
printf("getopt_long函数被调用,本函数第1个参数nargc=%d \n",nargc);//zjh
for (ti=0;ti<nargc;ti++)
{
printf("getopt_long函数被调用,本函数第2个参数nargv=%s \n",*nargv);//zjh
nargv++;
}
nargv = tm;//zjh
printf("getopt_long函数被调用,本函数第3个参数options=%s \n",options);//zjh
if ((retval = getopt_internal(nargc, nargv, options)) == -2) //internal:内部的//前两个参数对应于main(...),第三个即为冒号分隔的字符串
{
记的nargv = tm;//zjh 是在一开始把nargv的首地址记下,在对nargv++后,要还原回去,不然后面的地址就是错的了,其实应该拷贝一份出来,不是很熟悉,所以偷懒一下了。
打印的结果如预期,是一个向量,或者叫长字符串吧,中间各参数是用空格分隔的:
其实我输入的测试命令是“x264 --crf 22 -o test.264 hall_cif.yuv 352x288”,可以看到,它把这些以空格为分隔循环打印了出来啦。