C++ 如何在C++/C

C++ 如何在C++/C,c++,getopt,C++,Getopt,下面是我使用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': } } while((c=getopt(argc,ar

下面是我使用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':
  }
}
while((c=getopt(argc,argv,ab:)!=-1){

cout如您所说,如果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
\IFDEF\u SOLARIS_
对于(int index=0;indexcout如您所说,如果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
\IFDEF\u SOLARIS_
对于(int index=0;index不能试着编写自己的函数来解析命令行吗?“我不想使用boost。”有一个跨平台库已经编写好,可以满足您的需要,您会不遗余力地避免它?有些事情我永远无法理解…请修改您的代码;您在这里发布的内容甚至无法编译。当Solaris上的
man getopt
告诉您
getopt
在下一个主要版本中将不受支持时,这就是在说话关于shell命令,而不是C函数。为此,请运行
man-s3c getopt
。尝试编写自己的函数来解析命令行:“我不想使用boost。”有一个跨平台库已经编写好,可以满足您的需要,您会不遗余力地避免它?有些事情我永远无法理解…请修改您的代码;您在这里发布的内容甚至无法编译。当Solaris上的
man getopt
告诉您
getopt
在下一个主要版本中将不受支持时,这就是在说话关于shell命令,而不是C函数。为此,请运行
man-s3c getopt
。如果必须编写代码来手动处理命令行选项,为什么还要使用
getopt
?根本不需要编写代码,问题是如何处理没有它的Solaris。如果必须编写代码来手动处理命令行选项,那么你根本不需要使用
getopt
?问题是如何处理没有它的Solaris。