C++头文件和源文件的关系以及makefile文件

2 篇文章 0 订阅
1 篇文章 0 订阅

背景

因为函数之间需要相互引用,写入一个文件显得杂乱。写入不同文件,引用和编译也很麻烦。故用头文件。

规则

头文件的格式:

#ifndef <头文件的名称>
#define <头文件的名称>
<定义的函数>
#endif

源文件的格式:
对于实现头文件函数的源文件,需要引用其实现的头文件。
对于需要使用其他源文件函数的源文件,也需要引用头文件。

对于格式:
当源文件和头文件不在一个文件夹里的时候,路径的写法是:../表示父目录。

Makefile文件

main : bin/main.o bin/select.o bin/bubble_sort.o bin/util.o
    g++ bin/main.o bin/select.o bin/bubble_sort.o bin/util.o -o main

bin/main.o : src/main.cpp include/select.h
    g++ -c src/main.cpp -o bin/main.o

bin/select.o : src/select.cpp include/sort.h include/select.h include/util.h
    g++ -c src/select.cpp -o bin/select.o   

bin/bubble_sort.o : src/bubble_sort.cpp include/sort.h include/util.h include/select.h
    g++ -c src/bubble_sort.cpp -o bin/bubble_sort.o

bin/util.o : src/util.cpp include/sort.h
    g++ -c src/util.cpp -o bin/util.o

其代码文件在这里
但是还存在一些疑问,但是不能卡在这里。所以记录下疑问,待以后解决(也希望如果有人看见了能点拨一二):
Q1. 对于g++ -o,-c等这些命令,文件名的位置有什么规则。也就是那些位置代表已有的文件,哪些位置代表要生成的目标文件。比如:

#1
g++ -c src/main.cpp -o bin/main.o
g++ -c -o src/main.cpp bin/main.o

上面两条有什么不同么?

Q2. 查阅资料后,编译分为预处理 –>生成汇编语言–>转成机器语言–> 链接成可执行文件。那为什么上述的makefile没有这些步骤似乎也能成功得到可执行文件?是因为有默认的步骤省略了么?(因为我的makefile是网上下载再自行修改的,并且对与makefile是纯小白)

参考

从简单实例开始,学会写Makefile(一)
从简单实例开始,学会写Makefile(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值