首先是为什么要学文件
1--以下面代码为例进行讲解
#include <stdio.h>
int max(int a,int b);
int main() {
int a=5;
int b=6;
printf("%d\n",max(a,b));
}
int max(int a,int b)
{
return (a>b?a:b);
}
2--下面这个项目只是简单的把自己定义的函数放在项目中一个分文件里。
因为编译器会把整个项目中的文件后然后链接起来。
(这里会有疑问如果你自己定义的函数在下一个文件中怎么办,因为编译的话是每次对单个源代码文件编译,笔者猜测实际计算机操作时是将所有代码整理成一个文件,然后进行编译,反正计算机有自己的方法,而这种方法肯定是正确的)。
3--接下来是完整的文件结构
---main.c---
#include <stdio.h>
#include "max.h"
int main() {
int a=5;
int b=6;
printf("%d\n",max(a,b));
}
---max.c---
#include "max.h"
int max(int a,int b)
{
return (a>b?a:b);
}
---max.h---
int max(int a,int b);
结合上面的文件可以看出原来属于int max(int a,int b);的位置被替换成了#include "max.h"
而max.h里面的文件就是函数声明。所以可以引申到#include <stdio.h>这个相当于替换了一堆在指定目录的函数声明(printf,scanf等等)。
4--还有就是双引号还是尖括号的问题--
这个就可以印证上面的<>只是让编译器去指定的目录去找,所以自己定义的库一般用双引号"",系统的一般用尖括号<>。
5--static
以前在一个函数中static一个本地变量使之成为静态本地变量,因为全局变量在项目中是所有.c文件都能使用,加上static使之成为只能在当前文件单元中使用的全局变量。最有趣的在函数前面加static可以使函数只能在当前.c文件中被使用。(全文件见3--)