Windows c ++上getopt函数的替代方法是什么?

Jon*_*sch 6 c++ windows posix getopt

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

while ((opt = getopt(argc, argv, "a:p:h")) != -1)
Run Code Online (Sandbox Code Playgroud)

如何使用替代功能将此代码移植到Windows C ++?

谢谢

小智 8

微软在开源 IoTivity 项目中提供了一个很好的实现(以及其他一些帮助程序),您可以在这里重用(等待您可能有的任何许可要求):

在此处查看“getopt.h/.c”的“src”和“include”目录。

https://github.com/iotivity/iotivity/tree/master/resource/c_common/windows


woa*_*guy -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;
}
Run Code Online (Sandbox Code Playgroud)

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

  • getopt 用于解释存储在单个指针数组中的文本参数,最有可能解析命令行参数。可变参数函数不相似或不兼容。我认为OP正在寻找一些Windows DLL中已有的类似函数,他们可以在其中编写一个小的粘合函数来适应现有代码,而不是重新实现getopt。 (4认同)