以下のコードは、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
検索した場合、他の実装の中でも、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;
}