函数调用问题

时间:2021-03-31 19:03:39
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 个解决方案

#1


你的编译器不支持在函数里面定义函数的吧

#2


你的编译器不支持在函数里面定义函数,这样写

int   f(int x)

    if((x&(x-1)) == 0) 
        return   1; 
    else 
        return   0; 


int   main() 

    int   x   =   8; 
    
    printf("%d\n",   f(x)); 
    return 0;

#3


函数是用来调用的
在使用函数前必须先声明
可以是先声明后定义:                或者声明和定义一起写:
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”不能作为一个函数来用;

#4


也就是说,函数未声明是不能使用的,你的这个程序根本就不是在调用函数
第二个错没有认到f这个函数,而实际上这种写法f根本就不是一个函数!

#1


你的编译器不支持在函数里面定义函数的吧

#2


你的编译器不支持在函数里面定义函数,这样写

int   f(int x)

    if((x&(x-1)) == 0) 
        return   1; 
    else 
        return   0; 


int   main() 

    int   x   =   8; 
    
    printf("%d\n",   f(x)); 
    return 0;

#3


函数是用来调用的
在使用函数前必须先声明
可以是先声明后定义:                或者声明和定义一起写:
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”不能作为一个函数来用;

#4


也就是说,函数未声明是不能使用的,你的这个程序根本就不是在调用函数
第二个错没有认到f这个函数,而实际上这种写法f根本就不是一个函数!