比如:
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
的。