开发者社区> 问答> 正文

调用另一个源文件中的函数需要用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;   
    }    

展开
收起
a123456678 2016-06-06 09:20:26 2358 0
1 条回答
写回答
取消 提交回答
  • 函数声明主要是给链接器一个明确的hint,从而在匹配函数名字以后还能检查一下类型是否正确。至于extern关键字,对于函数声明本身是无所谓的,反正末尾一个分号编译器就懂了,能识别出来这是个声明而不是定义;只是对于变量的声明,没它就不行。

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

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

    2019-07-17 19:27:33
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载