下面是我使用getopt的小代码片段,它在我的linux机器上运行得很好,但在solaris机器上不行。这是我在互联网上找到的标准代码片段。
while ((c = getopt(argc, argv, "ab:")) != -1) {
cout << "I am solaris, I dont come here n";
switch(c) {
case 'a':
case 'b':
}
}
现在在我的linux机器上没有问题了。它做得很好。但是在我的solaris机器上,它甚至没有进入while循环,所以它没有为我解析任何内容。我在我的solaris机器上检查了"man getopt"(因为我认为shell中使用了getopt),它只是说下一个主要版本将不支持getopt。
那么我怎样才能使它在我的solaris机器上工作呢?我不想使用boost
谢谢D. L. Kumar
如果,如您所说,Solaris在下一个主要发行版中不支持getopt,那么当不在GNU/Linux上编译时,您需要使用自己的If/DEF宏。像这样:
#IFDEF _SOLARIS_
for (int index=0; index < argv; ++index)
{
c = argc[index];
switch(c) {
case 'a':
// do your code
case 'b':
index++;
if (index < argc)
PARAMATER = arg[index]; // plucks the parameter
else
HANDLE MISSING ERROR
// do your code
}
}
#ELSE
while ((c = getopt(argc, argv, "ab:")) != -1) {
cout << "I am solaris, I dont come here n";
switch(c) {
case 'a':
case 'b':
}
}
#ENDIF