在 Windows C++ 中,getopt 函数的替代方案是什么?

12

我正在使用Posix C编写下面的代码:

while ((opt = getopt(argc, argv, "a:p:h")) != -1)

我该如何使用另一种函数将这段代码移植到Windows C++中?

谢谢


如果有人正在寻找适用于两个平台的东西,可以使用类似 cargs 的工具。 - likle
2个回答

10

-5

如果你进行了搜索,你会发现另一个帖子介绍了一些针对 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;
}

参考资料:http://www.cplusplus.com/reference/cstdarg/va_list/


4
getopt 用于解析存储在单指针数组中的文本参数,最常用于解析命令行参数。可变参数函数与之不相似也不兼容。我认为 OP 是在寻找某个 Windows DLL 中已有的类似函数,他们可以编写一个小型粘合函数来适应现有代码,而不是重新实现 getopt。 - user2957811

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接