我最近一直在玩弄getopt
(来自 unistd.h)。我编写了一些代码,在使用 MinGW 的 gcc 编译的 Windows 7 下运行良好,而在我的 Raspberry Pi 上的 Raspbian Linux 下无法运行(我用 gcc 编译了它们,没有选项;gcc t.c
)。由于某种原因,当没有开关时,getopt 返回 int 255 或 char ÿ,而实际上它应该返回 -1。
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
char t;
opterr = 0;
while ((t = getopt(argc, argv, "a:")) != -1)
switch (t) {
case 'a':
printf("-a with argument %s\n", optarg);
return 0;
case '?':
printf("uknown option\n");
return 1;
default:
/* This is always 255 under linux, and is never reached under windows */
printf("getopt returned int %d (char %c)\n", t, t);
return 2;
}
return 0;
}
我遇到的一个问题是,实际上 255在 8 位非单数算术中是-1,所以我尝试在 while 条件下进行 int 类型转换,但这并没有起到任何作用。