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行发生错误。我该如何解决这个错误?
答案 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
。