如何处理 C++/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':
}
}
现在我的linux机器上没有问题了。它做得很好。但在我的 Solaris 机器上,它甚至不进入 while 循环,因此它不会为我解析任何内容。 我在我的solaris机器上检查了“man getopt”(因为我认为使用了shell中的getopt),它只是说在下一个主要版本中将不支持getopt。
那么我怎样才能让它在我的solaris机器上工作呢?我不想使用升压。
谢谢 库马尔
Following is my small code snippet using getopt that works well on my linux machine, but not on solaris machine. It is standard code snippet that I found else where in the internet.
while ((c = getopt(argc, argv, "ab:")) != -1) {
cout << "I am solaris, I dont come here \n";
switch(c) {
case 'a':
case 'b':
}
}
Now there is no problem on my linux machine. It does good job. But on my solaris machine, it does not even go inside the while loop, so it does not parse anything for me.
I checked "man getopt" on my solaris machine (as I think getopt in shell is used), It just says getopt will not be supported in the next major release.
So How I could i make it work on my solaris machine. I dont want to use boost.
Thanks
D. L. Kumar
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果,正如您所说,Solaris 在下一个主要版本中不支持 getopt,那么当不在 GNU/Linux 上进行编译时,您需要使用自己的 IF/DEF 宏。沿着这样的思路:
If, as you say, Solaris isn't going to support getopt in the next major release, you'll need to use your own with an IF/DEF macro when not compiling on GNU/Linux. Something along this lines: