警告:'numRest'的类型默认为'int'(在函数'sleep'中)

时间:2016-11-12 17:38:05

标签: c syntax gcc-warning function-declaration

我在函数'sleep'中收到警告:警告:'numRest'的类型默认为'int',我不明白为什么。它运行得非常好,但显然我得到了这个警告。有没有其他人在运行时收到此警告?

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;
}

2 个答案:

答案 0 :(得分:3)

问题在于函数签名定义。

 void sleep(numRest) {

应该是

void sleep(int numRest) {

否则,编译器将&#34;假设&#34; (现在已被最新标准淘汰)缺少的数据类型为int

相关,引用C11,主要更改(超过先前版本)列表

  
      
  • 删除隐式int
  •   

那就是说,

  • sleep()library function already,原型为unistd.h尝试将其用于用户定义的功能。
  • int main()应为int main(void),至少在托管环境中符合标准。

答案 1 :(得分:1)

您必须在函数声明中明确地将变量类型放在:

void sleep(int numRest) {

//your code here

}