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;
}
函数声明主要是给链接器一个明确的hint,从而在匹配函数名字以后还能检查一下类型是否正确。至于extern关键字,对于函数声明本身是无所谓的,反正末尾一个分号编译器就懂了,能识别出来这是个声明而不是定义;只是对于变量的声明,没它就不行。
C标准里是怎么要求的我不确定,不过建议是,对于本文件的函数不加extern,外部文件的加上,这样可以给读源码的人一个hint。
p.s. stdio.h里的函数声明都是有extern的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。