ISO C ++禁止指针和整数之间的比较[-fpermissive](C ++)

时间:2015-10-24 09:42:10

标签: c++

void first_screen_output()
{
    int input_num(); 
    scanf("%d",&input_num);
    if(input_num==1) return;
    else if(input_num==2)
    {
        system("pause");
    } 
}

当我尝试编译此代码时,发生了错误。 if~else行发生错误。我该如何解决这个错误?

1 个答案:

答案 0 :(得分:4)

gulp.watch('../css/source/*.scss').on('change', browserSync.reload);

这声明了一个名为int input_num(); 函数,它返回input_num并且不带参数。非正式地称为"the most vexing parse"。 C ++允许您在其他函数的实现中声明函数的事实只会增加混乱。

int

scanf("%d",&input_num); 表示您想要阅读"%d",因此您需要传递int。但是,int*函数指针&input_num),因为您的编译器应该警告过您。那是因为指定一个没有括号的函数名(int (*)())表示一个函数指针(并且运算符input_num的地址在这里没有效果,因为函数指针与所有其他指针不同)。

因此,这条线无论如何都会导致不良行为。

&

无法将函数指针与if(input_num==1) return; else if(input_num==2) s进行比较。

所有这些问题的解决方案实际上是int input_num而非功能:

int

当你接触它时,摆脱int input_num = 0; 并使用scanf