1、多文件编程,一个文件可以有多个函数,但是一个函数最多一个文件
2、多文件编程的步骤:
• 把所有函数分散在多个文件中,通常主函数在单独的文件里
• 为每个源文件编写一个配对的以.h作为扩展名的头文件,主函数所在的不需要,不分配内存的内容都可以写在头文件里,头文件里至少要包含配对源文件里所有函数的声明
• 在所有源文件里使用#include预处理指令包含所需要的头文件,配对头文件是一种需要的头文件,如果源文件里声明了头文件里声明的函数,也是需要的头文件
3、在GCC命令后列出所有源文件的路径就可以编译多文件程序
eg:lxl@ubuntu:~/day/day14$ gcc text1.c text1-1.c
4、可以把多文件程序的编译过程记录在Makefile文件里,然后使用make工具完成编译
#ifndef __TEXT_H__//用条件编译防止text.h被多次包含
// 使用条件编译可以避免重复编译,
// 需要注意的是要使用#ifndef语句
// 不同头文件的宏名称必须不同
// 头文件产用的宏名称应该是根据头文件的路径得来的
#define __TEXT_H__
int add(int,int);//头文件里至少要包含配对源文件里所有函数的声明
#endif //__TEXT_H__
5、从一个源文件里使用另一个源文件的全局变量时,需要使用extern关键字再次声明这个全局变量先在函数里添加变量,再在头文件用extern声明
6、使用exrern关键字声明变量时,通常放在头文件里
7、不可以跨文件使用静态全局变量
练习:
多文件编程:
text1.c:
/*
* 多文件编程
* */
#include <stdio.h>
#include "text1-1.h"
int main() {
int num = add(3, 8);
printf("num:%d\n", num);
return 0;
}
text1-1.c:
#include "text1-1.h"//将声明本函数的头文件包含进来
//如果还有其他函数也需要包含进
int add(int num, int num1) {
return num +num1;
}
text1-1.h:
#ifndef __TEXT_H__//如果一个文件包含了此头文件多次,使用这种方法,即在第一次编译时没有定义ABC的宏,执行了下面的所有,第二次再遇到编译此文件时ABC已经被定义,就不会再编译
// 使用条件编译可以避免重复编译,
// 粗要注意的是要使用#ifndef语句
// 不同头文件的宏名称必须不同
// 头文件产用的宏名称应该是根据头文件的路径得来的
#define __TEXT_H__
int add(int,int);//头文件里至少要包含配对源文件里所有函数的声明
#endif //__TEXT_H__