2016-11-26 12 views
-2

iは、次の警告を持って、GCC Cコンパイラの警告 "警告:コントロールが到達した..." 私 "mは間違って何を "のgcc -ansi -Wall -pedantic conc.c" でコンパイルするとき

を支援してくださいおかげで、

conc.c:機能において 'メイン': conc.c:8:1:警告:コントロールは、非ボイド関数の終わりに到達[-Wreturn型]

#include <stdio.h> 
void contract(char s1[], char s2[]); 
int main() 
{ 
    char s1[] = "abcd"; 
    char s2[] = "zzzz"; 
    contract(s1,s2); 
} 

void contract(char s1[], char s2[]) 
{ 
    char temp = 'a'; 
    int i = 0; 
    while (s1[i] != '\0') 
    { 
     temp = s1[i]; 
     i++; 
    } 
    if (i != 2) 
    { 
     s2[0] = s1[0]; 
     s2[1] = '-'; 
     s2[2] = temp; 
    } 
    printf ("\n The first char string is %s \n the shorten one is %s \n",s1,s2); 
} 
+0

警告テキストを簡単に検索すると、すぐに結果が表示されます –

答えて

3

メイン関数は明示的に何も返しません。ただ、最後にreturn 0;を平手打ちし、[OK]を次のようになります。

int main() 
{ 
    char s1[] = "abcd"; 
    char s2[] = "zzzz"; 
    contract(s1,s2); 
    return 0; /* Here! */ 
} 
3

-ansiオプションは、ISO C90標準に切り替わります。当時、main関数は何かを返さなければなりませんでした。 C99以降、return文を省略しても問題ありません。

3

(= C89)を-ansiを使用する場合は、あなたが何も返さない場合は0を返すメインのデフォルトの動作を得ることはありません- あなたはvoid以外の戻り値の型(int)を定義し、そして今、あなたは、単に持っています何かを返す。

関連する問題