程序单独编译注意事项
2017-10-09 15:33
197 查看
大家好,今天来介绍编程时使用的一种良好习惯---单独编译。
在编程时,我们经常会在不同的文件中调用相同的变量,例如结构体变量。我们可以在这些文件中分别定义这一结构体变量。但问题在于,当要对这一结构体变量进行修改时,我们还要逐一文件修改结构体,这十分麻烦。因此,我们寻找一个简单的方法:将结构体变量定义在一个头文件中,在不同的文件中声明该头文件,当要对结构体进行修改时,只需修改头文件中的结构体即可。
将这一思路扩展开去,我们可以将程序写作如下结构:
头文件:包含结构声明和使用这些结构的函数的原型。
源文件:包含与结构有关的函数的代码。
源文件:包含调用了与结构有关的函数的代码。
应该注意:
1.我们可以在头文件中定义结构是因为它不创建变量,而是告诉源文件想要创建结构变量时,模板是怎样的。
2.在源文件声明头文件时,我们要注意那是系统定义的头文件还是我们自己定义的头文件,如果是像math.h iostream.h这类系统定义的头文件,我们可以用尖括号来括住头文件名: #include <iostream> 但如果是自己定义的头文件,我们可以用双引号来括住头文件名:
#include "my.h"。其间的区别是,如果文件名包含在尖括号中,则c++编译器将在存储标准头文件的主机系统的文件系统中查找。如果文件名包含在双引号中,则编译器将首先查找当前的工作目录或源代码目录,如果没有在那里找到头文件,则将在标准位置查找。因此在引用自己的头文件时,应使用双引号而不是尖括号。
这些东西我原先看大型代码的时候不懂,最近看了书结合之前的困惑真的豁然开朗。希望对大家也有帮助。
我们下期见!
在编程时,我们经常会在不同的文件中调用相同的变量,例如结构体变量。我们可以在这些文件中分别定义这一结构体变量。但问题在于,当要对这一结构体变量进行修改时,我们还要逐一文件修改结构体,这十分麻烦。因此,我们寻找一个简单的方法:将结构体变量定义在一个头文件中,在不同的文件中声明该头文件,当要对结构体进行修改时,只需修改头文件中的结构体即可。
将这一思路扩展开去,我们可以将程序写作如下结构:
头文件:包含结构声明和使用这些结构的函数的原型。
源文件:包含与结构有关的函数的代码。
源文件:包含调用了与结构有关的函数的代码。
应该注意:
1.我们可以在头文件中定义结构是因为它不创建变量,而是告诉源文件想要创建结构变量时,模板是怎样的。
2.在源文件声明头文件时,我们要注意那是系统定义的头文件还是我们自己定义的头文件,如果是像math.h iostream.h这类系统定义的头文件,我们可以用尖括号来括住头文件名: #include <iostream> 但如果是自己定义的头文件,我们可以用双引号来括住头文件名:
#include "my.h"。其间的区别是,如果文件名包含在尖括号中,则c++编译器将在存储标准头文件的主机系统的文件系统中查找。如果文件名包含在双引号中,则编译器将首先查找当前的工作目录或源代码目录,如果没有在那里找到头文件,则将在标准位置查找。因此在引用自己的头文件时,应使用双引号而不是尖括号。
这些东西我原先看大型代码的时候不懂,最近看了书结合之前的困惑真的豁然开朗。希望对大家也有帮助。
我们下期见!
相关文章推荐
- Linux编译程序时的一些注意事项
- OpenCV程序交叉编译注意事项
- 基于bluez程序编译时注意事项
- Linux编译程序时的一些注意事项
- linux环境下编译源码和运行程序时,include文件和lib库文件的注意事项
- Cmake的用法(以及编译程序的注意事项)
- 使用静态库时需要注意的事项(gcc下程序调用静态库编译命令:主文件必须在静态库前面!)
- 程序编译时书写Makefile注意事项一例
- 基于bluez程序编译时注意事项
- 使用静态库时需要注意的事项(gcc下程序调用静态库编译命令:主文件必须在静态库前面!)
- VS2013编译WinXP下运行程序注意事项
- win7上编译的用ADO访问Access数据库的程序运行在WindowsServer2003上的注意事项
- 基于bluez or socketcan等 程序编译时注意事项
- 使用Cocos2d-x将程序编译为Andorid注意的事项
- 1.4.Qt通过命令行编译运行程序注意事项
- Linux编译程序时的一些注意事项
- 编译用到MySQL API的程序的一项注意事项
- DOC编译和运行java程序注意事项
- 基于bluez程序编译时注意事项
- V8 JavaScript Engine 编译与使用注意事项-使用V8