如:编译Person.o时,Person.cpp是包含了Person.h的,为什么这条规则不写成:题目解答:复制代码
- ./iterator
- ├── Company.cpp
- ├── Company.h
- ├── Department.hpp
- ├── Enumerator.hpp
- ├── Iterator.cpp
- ├── Person.cpp
- ├── Person.h
- └── README.md
这种写法也是没有题目的,对于makefile而言,没有语法错误。但是没有这个必要,《Linux C++ 开发3 - 你写的Hello world经过哪些过程才被计算机理解和实行?》一文中我们讲了在程序预处理阶段,预处理器会将全部通过#include包含的头文件更换成真正的内容,以是我们编译的时候只需要对.cpp进行编译即可。3.2.3.2. 题目二:为什么没有对.hpp的规则界说?
为什么Department.hpp、Enumerator.hpp不需要编译。题目解答:
正常,我们创建C++代码文件的时候,一般会创建两个文件:3.2.4. Makefile V2.0
但这样每次要创建两个文件,而且要在两个文件上分别进行声明和界说,挺麻烦的。于是为了偷懒,对于一些简单的,没有交错引用的类,我们通常会把声明和界说都放在一个文件中,这个文件通常以.hpp作为后缀(如:abc.hpp)。
- 一个是头文件(如:abc.h),用来进行类、函数、常量等的声明。
- 一个是源文件(如:abc.cpp),用来进行类、函数的界说。
.hpp 本质上照旧一个头文件,GCC在编译的时候,会把它当做头文件来处理。以是我们在Makefile中可以不消写对.hpp的编译规则。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |