以下是我使用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机器上运行。我不想使用提升。
由于 D. L. Kumar
答案 0 :(得分:1)
如果正如你所说的那样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