double circleZhouChang(double r)
{
return 2 * PI * r;
}
现在如果我们需要在其他.c文件中调用circleMianJi和circleZhouChang这两个方法的话,就只需要包含circle.h即可,现在我们要在包含main函数的main.c文件中调用:
#include
#include “circle.h“
int main(int argc, char const *argv[])
{
double r = 5;
double mianJi = circleMianJi(r);
double zhouChang = circleZhouChang(r);
print(“半径为%.2 的圆面积为%.2
“, r, mianJi);
print(“半径为%.2 的圆周长为%.2
“, r, zhouChang);
getchar();
return 0;
}
如果我们想要在main.c中读写circle.c的PI变量,则只需要在声明全局变量的地方写一句:
external double PI;
就可以了,记住,使用external的时候不能对变量进行初始化!
同样的,如果circle不想PI被其他.c文件读写,只需要加上static就好了。
同理,如果不想circleMianJi和circleZhouChang这两个方法被其他.c文件调用,只需要在circle.h中声明它们时加static即可。当然了,函数实现和声明必须保持一致,既然声明那儿加了static,实现的地方也必须加上!
circle.h文件:
#include
static double circleMianJi(double r);
static double circleZhouChang(double r);
circle.c文件:
#include “circle.h“
static double PI = 3.1415926;
static double circleMianJi(double r)
{
return PI * r * r;
}
static double circleZhouChang(double r)
{
return 2 * PI * r;
}」
老爹通过投影仪给我们演示了一遍,基本上没有什么难度。
「原来咱们编译的时候针对的是单个.c文件,现在文件变多了,编译命令也会有所改变。
gcc *.c o xxxx
*.c的意思是编译当前文件加下所有的.c文件,最后生成一个名为xxxx的可执行文件。当然了,你们有兴趣的话也可以这样:
gcc circle.c main.c o mian
把所有的.c文件都一一罗列出来。
不过当.c文件比较多的时候就比较好玩儿了。
至此,和函数相关的知识我们就差不多讲完了。这部分理论知识比较多,也比较抽象,需要你们结合实际代码多理解。
同时,也恭喜你们升级了,从小菜鸟升级到了菜鸟。
相信有了这么多的知识积累,你们已经能够写出很多有用的程序来了。同时你们对C语言的世界应该也有了一个大概的轮廓了,但是想要在这个世界中飞翔还差一段距离。
明天,我会和你们一起学习C语言最为中的精髓部分——指针。当学完这一部分,你们就成长为了真正的鸟,基本上能够在C语言世界中自由飞翔了。」