我正在使用Posix C编写下面的代码:
while ((opt = getopt(argc, argv, "a:p:h")) != -1)
我该如何使用另一种函数将这段代码移植到Windows C++中?
谢谢
微软在开源的IoTivity项目中提供了一个不错的实现方式(以及其他一些帮助程序),您可以在此处重复使用(取决于您可能具有的任何许可要求):
请查看此处的“src”和“include”目录,以获取“getopt.h/.c”文件。
https://github.com/iotivity/iotivity/tree/master/resource/c_common/windows
如果你进行了搜索,你会发现另一个帖子介绍了一些针对 Windows 系统的 getopt 兼容库,以及其他实现方式。
getopt.h: 在 Windows 中编译 Linux C 代码
另外,你也可以使用 va_arg、va_list、va_start 和 va_end 函数来处理参数。
/* va_arg example */
#include <stdio.h> /* printf */
#include <stdarg.h> /* va_list, va_start, va_arg, va_end */
int FindMax (int n, ...)
{
int i,val,largest;
va_list vl;
va_start(vl,n);
largest=va_arg(vl,int);
for (i=1;i<n;i++)
{
val=va_arg(vl,int);
largest=(largest>val)?largest:val;
}
va_end(vl);
return largest;
}
int main ()
{
int m;
m= FindMax (7,702,422,631,834,892,104,772);
printf ("The largest value is: %d\n",m);
return 0;
}