两个可以放在同一目录下,也可以放到不同的目录下,前提是你在主函数文件中应当包含相应的头文件或C文件(路径写对应,写完整就好)。
创新互联-专业网站定制、快速模板网站建设、高性价比谷城网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式谷城网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖谷城地区。费用合理售后完善,10多年实体公司更值得信赖。
外部函数文件根据所写函数需要将对应头文件包含进来,stdio.h作为一个标准输入输出文件,只要你该外部文件内涉及到输入输出等操作,就是必须要包含进来的。
希望对你有所帮助!
外部函数??? extern只声明变量的吧。外部函数只需要包含它所在的头文件就可以
例如 有 file1,file2,file3 ,3个文件
在file1中声明了一个函数 func( int a,int b);
那么在file2,file3如果需要使用file1中的func函数时,需要在file2,file3文件的开始位置,写入#include"file1"才可以正确使用
请使用预编译指令 #include。加入外部文件,就可以使用外部文件的函数了。
#include放在代码文件头,用于告诉编译器,文件中包含的头文件,属于预处理文件的一部分 。
语法为:
#include iostream.h (这句是程序编译时搜索系统目录文件)
#include “HName.h" (这句是程序编译时搜索当前项目的文件)
例如:
//函数实现 a.c文件:
int add(int x, int y){
return x+y;
}
//主文件 main.c文件:
#include stdio.h
#include "a.c" //引入外部函数
int main(){
int i;
i = add(1,2);
printf("%d",i);
return 0;
}
有两种理解.(1)库函数是C语言的内部函数或自带函数,外部函数即程序员自定函数.
(2)凡加写了extern 的函数是外部函数.
第一种理解好懂:
C语言的内部函数指的是C语言自带的函数,无论是动态链接的或静态链接的. 这些函数通过C语言的头文件定义了.
例如, sin(),cos()等数学函数,在math.h中定义了,输入输出函数 printf(),fgetc()在stdio.h中定义了,时间函数表time(),ctime()等在time.h中定义了.还有许多其他内部函数.编程时,只要用#include 库名.h写在编程头部,程序中就可调用.
自定义函数,就是用户自己写的函数.
第二种凡加写了extern 的函数是外部函数:
自定义函数可以与程序的main()写在同一个文件中,也可以写在另一个文件中,这时你可能还另写自己的头文件或者写extern....,告诉编译器,main中用到的某某函数是"外部函数".
例如,main()在a.c中,自定义函数my_func()在a2.c中
a.c内容:
#include stdio.h
extern float my_func(float a);
main()
{
printf("result=%f\n",my_func(2.0));
}
a2.c 内容:
float my_func(float a)
{
return a;
}
编译:
cl -c a.c [得到a.obj]
cl -c a2.c [得到a2.obj]
cl a.obj a2.obj [链接成a.exe]
运行:
a.exe
得
result=2.000000
extern float my_func() 是外部说明,告诉编译,main()里的my_func是外部函数,要通过链接(.obj)得到.
如果把my_func写在a.c里:
#include stdio.h
float my_func(float a){
retun a;
}
main()
{
printf("result=%f\n",my_func(2.0));
}
my_func() 就不是外部函数.
编译:
cl a.c [得a.exe]
运行:
a.exe
得
result=2.000000
当不提供函数原型,而调用处尝不知道返回值类型,此时编译器黙认返回值为整型,而实际返回类型并不是整型,结果没有做正确的数据类型转换,取到的就是错误的数据
你可以在return sum;前打印这个结果,看看计算时是否正确,
同时在循环体中打印出来各个元素值,看看传参数是否正确,如果这两处都还正确则说明只是返回值未正确类型转换。