web-dev-qa-db-ja.com

Windows C ++でgetopt関数に代わるものは何ですか?

以下のコードは、PosixCを使用しています。

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

別の関数を使用して、このコードをWindows C++に移植するにはどうすればよいですか?

ありがとう

マイクロソフトは、オープンソースのIoTivityプロジェクト内にNice実装(およびその他のヘルパー)を提供しており、ここで再利用できる可能性があります(ライセンス要件は保留中です)。

ここで「getopt.h/.c」の「src」および「include」ディレクトリを確認してください。

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

2
Joey

検索した場合、他の実装の中でも、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/

0
woahguy