2011-10-04 45 views
2

在這裏,我寫了一個小程序,它能夠讀取命令行參數傳遞命令行參數的應用程序用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 

和程序崩潰。 我想念什麼?

+1

究竟它是如何崩潰的?什麼是命令,錯誤信息是什麼? –

回答

7

argv參數main應具有char *[]類型,而不是const char *[],以便它可以被轉化爲char *const []getopt期望。實際上,對於託管實現,C標準規定了char *[]或同等產品。

+0

但是,爲什麼會導致程序崩潰? – Rup

+0

@Rup:我必須承認這對我來說是個謎。 –

3
int main (int argc, const char * argv[]) 

應該

//no const 
int main (int argc, char * argv[]) 
相關問題