首页 > 编程 > C++ > 正文

C++头文件、源文件、#include

2020-05-23 14:26:37
字体:
来源:转载
供稿:网友

头文件和源文件

由于头文件是为了重用,所以在一个复杂的程序中,头文件可能会被间接地重复包含。如果头文件里面都是函数声明,那问题还不大。如果头文件里面有函数定义(如程序11.2),那么就会出现函数被重复定义的错误,程序将无法运行。我们可以采用函数声明和定义分离的方式:把所有的声明都放在shape.h中,把所有的定义放在shape.cpp中。注意必须在shape.cpp中包含shape.h,否则在编译连接时会发生错误。我们在使用时仍然包含shape.h,但由于函数的定义并不在该头文件中,所以就不会被重复定义了。

细说#include

我们几乎每次编写程序的时候都要用到#include命令,那么这条命令到底是什么意思呢?

#include是一条编译预处理命令。什么叫编译预处理命令呢?我们知道,程序中的每一句语句会在运行的时候能得到体现。比如变量或函数的声明会创建一个变量或者函数,输出语句会在屏幕上输出字符。然而编译预处理命令却不会在运行时体现出来,因为它是写给编译器的信息,而不是程序中需要执行的语句。编译预处理命令不仅仅只有#include一条,在C++中,所有以#开头的命令都是编译预处理命令,比如#if、#else、#endif、#ifdef、#ifndef、#undef和#define等等。

当编译器遇到了#include命令后,就把该命令中的文件插入到当前的文件中。不难想象,程序11.2的main.cpp文件实质上包含了shape.h文件中的所有语句。所以它能够顺利调用shape.h文件中的各个函数。

试试看:
1、把程序11.2的main.cpp中#include "iostream.h"移动到shape.h中,是否会影响程序的运行?为什么?
2、如果有两个头文件a.h和b.h,在a.h中有#include "b.h",在b.h中有#include "a.h",那么在编译包含它们的源文件时,会发生什么错误?
结论:互相包含的两个头文件在编译的时候会导致错误甚至死机。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表