HeadFirst笔记系列——第四章 分割源文件(共享代码)
C语言中的数据类型
浮点型:float
double
整形: short
int
long
char
(C语言中char是以字符编码保存的,他们也是数字,ASCII码表)
注意:整型相除只能得到整数,要想结果为浮点型就需要将计算中的其中一个数转为浮点型
C语言中函数是有顺序的 (和Java有区别)
main函数中调用的函数需要在main函数之前声明,和Java语言有很大的区别。可以先声明后定义
共享代码:(和Java有区别)
当我们有一段代码或者一个C文件中的所有代码需要共享时可以这样做
1:写好共享代码,如文件名为
test.c
2:创建一个头文件,如test.h
,包含所有的共享函数声明
3:在需要共享的代码的代码上添加上面的头文件
4:在使用gcc编译的时候需要指定需要用到的所有C文件
#include "test.h" //因为是本地的头文件,所以使用双引号来引用,而不是尖括号<>
部分编译
两个指令:
gcc -c *.c //将c文件编译成.o文件即目标文件
gcc *.o -o launch //将.o文件编译程可执行文件
这样就可以修改哪个源文件重新编译哪个,不必因为一个源文件修改编译全部的文件
make指令
用make指令来完成自动化编译,
1:创建makefile文件
2:根据特定的格式指定两个参数
参一:编译需要的文件(依赖项)
参二:需要执行的指令(生成方法)
这样只需要执行make launch 就会按照makefle中的指令来编译生成launch文件,这样当有文件被修改过,make就会帮我们分辨需要编译哪个,不用编译哪个
makefile模板
//生成的目标文件名:需要依赖的文件一,需要依赖的文件二,需要依赖的文件三
launch.o: launch.c launch.h thruster.h
gcc -c launch.c //执行的指令 注意:这里必须使用tab来缩进
thruster.o: thruster.h thruster.c
gcc -c thruster.c
launch: launch.o thruster.o
gcc launch.o thruster.o -o launch
这样只需要执行下面的命令
make launch
即运行了下面的命令
gcc -c launch.c
gcc -c thruster.c
gcc launch.o thruster.o -o launch
C语言和Java的区别:
1:函数调用区别:
在Java中不用在意定义函数的位置关系;
在C语言中函数要在main函数之前声明或者定义,否则编译器会不认识这个后定义的函数,然后默认的把这个函数的返回值认为是int,容易出现错误。但是所有的函数都定义在main函数之前是非常不方便的所以C语言中可以先把函数声明出来,之后在定义函数——声明和定义分离。
2:分离代码的区别:
在Java中每一个文件都是一个类,类以文件的形式存在同时也将一个程序的代码分成多个源文件,这样便于调用和维护,而相互之间的调用使用对象的方式;
C语言中没有对象的概念,它是面向过程的语言,那么C程序中分离的多个源文件中的代码是怎么互相调用的呢?头文件。将需要共享的代码放到一个单独的C文件中,然后把共享的函数声明放到一个单独的 .h 头文件中,所有需要使用共享代码的C文件中都包含这个头文件,这样在编译的时候列出所有需要使用的C文件就可以了,编译器就会在代码中通过头文件的声明自动的找到共享代码。