在这里,我写了一个能够读取命令行参数的小应用程序
int main (int argc, const char * argv[])
{
int c;
while ((c = getopt (argc, argv, "Il:o:vh?")) != -1)
{
switch(c)
{
case 'I':
printf("I");
break;
}
}
return 0;
}
问题在于,当我尝试编译它时,编译器会打印
warning: passing argument 2 of ‘getopt’ from incompatible pointer type
并且程序崩溃。 我错过了什么?
答案 0 :(得分:7)
argv
的{{1}}参数应为main
,而不是char *[]
,以便可以转换为const char *[]
char *const []
char *[]
预计。事实上,{{1}}或等效的C标准强制要求托管实现。
答案 1 :(得分:3)
int main (int argc, const char * argv[])
应该是
//no const
int main (int argc, char * argv[])