将命令行参数传递给用C编写的应用程序

时间:2011-10-04 09:58:01

标签: c

在这里,我写了一个能够读取命令行参数的小应用程序

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

并且程序崩溃。 我错过了什么?

2 个答案:

答案 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[])