【C语言】调用另一个源文件中的函数需要用extern关键字申明吗?


比如:


 a.c文件中:   
    double squ(double x)   
    {  
        return x*x;  
    }  

b.c文件中:  
    #include<stdio.h>  
    extern double squ(double x); //这里需要加extern吗?按照引用外部变量的规则应该加extern吧。  
    //测试发现可以不加,似乎更常见的做法是不加。是一种约定吗?有没有确定的做法?  
    int main()  
    {  
        printf("%f",squ(3.0));  
        return 0;   
    }

c 编程

渚熏不是基老 10 years, 9 months ago

函数声明主要是给链接器一个明确的hint,从而在匹配函数名字以后还能检查一下类型是否正确。至于 extern 关键字,对于函数声明本身是无所谓的,反正末尾一个分号编译器就懂了,能识别出来这是个声明而不是定义;只是对于变量的声明,没它就不行。

C标准里是怎么要求的我不确定,不过建议是,对于本文件的函数不加 extern ,外部文件的加上,这样可以给读源码的人一个hint。

p.s. stdio.h 里的函数声明都是有 extern 的。

finally answered 10 years, 9 months ago

Your Answer