说明:
当一个源文件(a.cpp)要调用另一个源文件(b.cpp)定义的方法时,需要在a.cpp中写上这个方法的声明(只需要该方法的名称、返回值和参数,类似Java的接口);
如果每次调用其他文件的方法时都写上相同的声明就会很麻烦,而且当b.cpp的定义修改时所有调用到该文件的声明都要修改,这样工作量太大且容易出错,所以出现了头文件,我们把所有的声明都存放到头文件中,需要使用到的时候使用宏命令“#include”包含进这个.cpp文件中即可;
#include:只有一个功能:把它后面所写的那个文件的内容,完完整整地、一字不改地拷贝到当前的文件中来;
而C++规定,定义只有一次,声明可以多次,导致头文件只能写声明,不能进行定义,如果头文件进行定义,被多个文件#include后,就会出现多个定义导致编译失败;
头文件不会进行编译,只会通过#include被其他多个源文件包含,然后头文件中的内容作为源文件的一部分进行编译;
需要注意的是,.h头文件不用写在编译器的命令之后,但它必须要在编译器找得到的地方、通常是和源文件位于同一个目录下;
头文件的后缀名可用任意名称;
条件编译:
1 #ifndef COMDEF_H 2 #define COMDEF_H 3 4 //头文件内容 5 6 #endif
使用上述宏命令可以使头文件的内容只被执行一次;
extern:
extern关键字指定当前的内容为声明;
1 double up;//定义了up变量,并且赋值为0 2 extern double up;//声明了外部的变量up,不会分配内存
函数的声明extern关键词是可有可无的,因为函数本身不加修饰的话就是extern的;
例外:
const对象可以直接定义在头文件中;
内联函数也可以直接定义在头文件中;
类的定义放在头文件中,而类的函数成员的实现代码放在一个.cpp文件中;
C++学习笔记(一):头文件和源文件
时间: 2024-10-07 01:45:21