下面的代码我正在使用Posix C:
while ((opt = getopt(argc, argv, "a:p:h")) != -1)
如何使用替代功能将此代码移植到Windows C ++?
由于
答案 0 :(得分:1)
如果你已经搜索过,你会找到另一个线程来覆盖getopt的一些兼容性库,以及基于Windows的系统的其他实现。
getopt.h: Compiling Linux C-Code in Windows
另一方面,你总是可以使用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;
}
答案 1 :(得分:1)
Microsoft在开源IoTivity项目中提供了一个很好的实现(以及一些其他帮助程序),您可以在这里重复使用(等待您可能拥有的任何许可要求):
看看&#34; src&#34;和&#34;包括&#34;这里的目录是&#34; getopt.h / .c&#34;。
https://github.com/iotivity/iotivity/tree/master/resource/c_common/windows