2016-11-12 5 views
1

'sleep'関数で警告を受け取ります:警告: 'numRest'の型が 'int'にデフォルト設定されています。 。それは完璧に正常に動作しますが、明らかに私はこの警告を受け取りました。彼らはそれを実行するときに誰もがこの警告を取得しますか?警告: 'numRest'のタイプはデフォルトで 'int'(関数 'sleep')

void sleep(numRest){ 

if ((numRest >= 0) && (numRest <=4)){ 
    printf("Sleep deprived!"); 
} 


else if ((numRest > 4) && (numRest < 6)){ 
    printf("You need more sleep."); 
} 


else if ((numRest >= 6) && (numRest < 8)){ 
    printf("Not quite enough."); 
} 


else{ 
    printf("Well done!"); 
} 

return; 
} 

int main() 
{ 
int numSleep = -1; 


if (numSleep == -1){ 
    printf("Test 1\n"); 
    printf("Input: -1\n"); 
    printf("Expected Result: Error, you cannot have a negative number of hours of sleep.\n"); 
    printf("Actual Result: "); 
    sleep(numSleep); 
    printf("\n\n"); 

    numSleep = 4.5; 
    printf("Test 2\n"); 
    printf("Input: 4.5\n"); 
    printf("Expected Result: You need more sleep.\n"); 
    printf("Actual Result: "); 
    sleep(numSleep); 
    printf("\n\n"); 


} 





return 0; 
} 

答えて

3

問題は機能シグネチャの定義にあります。

void sleep(numRest) { 

void sleep(int numRest) { 

する必要がありそうでない場合、コンパイラが不足しているデータ型がintであること(最新の標準によって現在は廃止) "仮定" します。

  • sleep()があり、前記

    C11から引用関連、(以前のバージョン上)主な変更点は、リスト

    • 暗黙int

    を除去0、プロトタイプunistd.hではありませんユーザー定義関数についても同じことを試みてください。

  • int main()は、ホスト環境では少なくとも標準に準拠するためにはint main(void)である必要があります。あなたが明示的として、関数宣言で変数の型を配置する必要があり
+0

すごいああ、私は完全にあなたに感謝している逃しました –

1

void sleep(int numRest) { 

//your code here 

} 
関連する問題