Makefile
test:f1.o f2.o main.o
gcc f1.o f2.o main.o -o test
f1.o:f1.c
gcc -c -Wall f1.c -o f1.o
f2.o:f2.c
gcc -c -Wall f2.c -o f2.o
main.o:main.c
gcc -c -Wall main.c -o main.o
clean:
rm *.o test
创建和使用变量
创建变量的目的:用来代替一个文本字符串
-
系列文件的名字
-
传递给编译器的参数
-
需要运行的程序
-
需要查找源代码的目录
-
你需要输出信息的目录
-
你想做其他事情
变量定义的两种方式
-
递归展开方式VAR=var
-
简单方式VAR: =var
变量使用($(VAR))
用“$$”来表示“$”
类似于编程语言中的宏
用这种方式定义的变量,会在变量的定义点,按照被引用的变量的当前值进行展开
这种定义变量的方式更适合在大量的编程项目中使用,因为它更像我们一般的编程语言
自动变量
$* | 不包含扩展名的目标文件名称 |
---|---|
$+ | 所有依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件 |
$< | 第一个依赖文件的名称 |
$? | 所有时间戳比目标文件晚的依赖文件,以空格分开 |
$@ | 目标文件的完整名称 |
$^ | 所有不重复的目标依赖文件,以空格分开 |
$% | 如果目标是归档成员,则该变量表示目标的归档成员名称 |
Make使用
直接运行make
选项 | 含义 |
---|---|
-C | dir读入指定目录下的Makefile |
-f | file读入当前目录下的file文件作为Makefile |
-i | 忽略所有的命令执行错误 |
-I | dir指定被包含的Makefile所在目录 |
-n | 只打印要执行的命令,但不执行这些命令 |
-p | 显示make变量数据库和隐含规则 |
-s | 在执行命令时不显示命令 |
-w | 如果make在执行过程改变目录,打印当前目录名 |
Makefile的隐含规则
- 编译C程序的隐含规则
“<n>
.o”的目标的依赖目标会自动推导为“<n>
.c”,并且其生成命令是$(CC) -c $(CPPFLAGS) $(CFLAGS)
- 链接Object文件的隐含规则
“<n>
”目标依赖于“<n>
.o”,通过运行C的编译器来运行链接程序生成(一般是“ld”),其生成命令是:$(CC) $(LDFLAGS) <n>.o
$(LOADLIBES) $(LDLIBS
这个规则对于只有一个源文件的工程有效,同时也对多个Object文件(由不同的源文件生成)的也有效。
Makefile的VPATH
VPATH:(虚路径)在make需要去找寻依赖关系时,在文件前加上路径,把路径告诉make。
数据结构
数据结构概念
数据结构是研究组成数据的数据元素的关系的学科。
数据结构研究的目的
通过研究数据元素的关系,帮助我们在开发软件的时候更好的组建数据模型,让数据在内存中的操作更加的流畅高效。
-
逻辑关系
-
存储关系
-
运算关系
数据
数据即信息的载体,是能够输入到计算机中并且能被计算机识别、存储和处理的符号总称。
数据元素
数据元素是数据的基本单位,又称之为记录(Record)
数据项
数据元素由若干数据项组成,数据项是数据中的最小单位。
数据类型
数据类型是对数据元素取值范围与运算的限定。
数据结构(DS)可用形式化语言描述,即DS是一个二元组:DS = (D, R),其中D为数据元素的集合,R为D上关系的集合。
数据之间的相互关系
- 逻辑结构:
表示数据元素之间的抽象关系(如邻接关系、从属关系等)。
有四种基本的逻辑结构:集合结构、线性结构、树形结构、图状结构
-
存储结构
数据的逻辑结构在计算机内的存储形式。
分为顺序存储结构、链接存储结构、索引存储结构、散列存储结构
- 数据运算
对数据进行的操作,如插入、删除、查找、排序等。
网友评论