int main()
{
int x = 8;
int f(x) //expected `,' or `;' before '{' token
{
if( (x&(x-1)) == 0 )
return 1;
else
return 0;
}
printf("%d\n", f(x)); //`f' cannot be used as a function
}
请问这两个错误是什么原因造成的?谢谢!
4 个解决方案
函数是用来调用的
在使用函数前必须先声明
可以是先声明后定义: 或者声明和定义一起写:
int f(int); <==> int f(int x){
int f(x){ 语句;
语句; }
}
第一个错:expected `,' or `;' before '{' token
因为程序在main函数中是一行一行的顺序执行下来,遇到int f(x){后,编译器认为是一行语句,故提示缺少“;”号;
第二个错:`f' cannot be used as a function
则是因为函数未声明而使用的原故,提示“f”不能作为一个函数来用;
也就是说,函数未声明是不能使用的,你的这个程序根本就不是在调用函数
第二个错没有认到f这个函数,而实际上这种写法f根本就不是一个函数!