大程序处理
在Dev C++中新建一个项目,把几个源代码文件加进去,对于一个项目,Dev C++的编译会把一个项目中所有的源代码都编译后,连接起来
头文件
把函数原型放到一个头文件(.h)钟,在需要调用这个函数的源代码文件中,就能让编译器在编译的时候知道函数的原型
在使用和定义这个函数的地方都应该#include这个头文件,这样可以保证函数的正确性,
一般的做法就是任何的.c都有对应的同名.h,把所有对外公开的函数原型和全局变量的声明都放进去,
声明
int i ;是变量的定义
extern int i ;是变量的声明
类型:
- 函数原型
- 变量声明
- 结构声明
- 宏声明
- 枚举声明
- 类型声明
- inline函数
只有声明可以被放在头文件中,否则会造成有重复的实体
声明也不能被重复声明,因此引入了条件编译
#ifndef _MAX_H_ #define _MAX_H_ xxx #endif
Makefile
认识makefile
makefile并非仅仅提供一次gcc编译,它更重要的意义是表达了多文件之间的依赖关系
max: main.o max.o gcc main.o max.o -o max main.o: main.c max.h gcc -c main.c max.o:max.c max.h gcc -c max.c
makefile变量
sum:sum.o main.o gcc sum.o main.o -o sum main.o:sum.h sum.o:sum.h %.o:%.c gcc -c $<
一般只表示依赖关系,后面承接相应的通用编译操作
%.o:%.c表示.o的文件依赖于.c
$代表变量, $<代表第一个变量
CC = gcc OBJS = main.o sum.o sum: $(OBJS) $(CC) $(OBJS) -o sum $(OBJS):sum.h %.o: %.c $(CC) -c $<
$^代表上面依赖的文件,$@代表目标文件
$echo $^会输出依赖文件名字