C++游戏编程-如何include文件

05//11/2020

类和文件

文件是一个程序的物理结构的核心,正确地组织文件是实现高效的物理结构的第一步。

分离式编程

头文件(.h)和实现文件(.cpp)的分离

优点:

  • 便于对文件的浏览,无需看实现部分,同时根据文件名就可以找到类名字。
  • 处理了缩短编译时间。因为当修改bug的时候,就需要编译很多次,如果文件是分离的,基本只需要编译改动的文件。

头文件

头文件有什么

  • 头文件暴露了私有变量与私有函数的信息,这些信息只在实现部分有用,其实无需在头文件中

include指令

打开指定文件,读取具体内容,并把它们插入到#include语句所在的地方。

问题

  • 重复定义
//Game.h
#define MAX_PLAYER = 10

//Game.cpp
#include "Game.h"

//other.h
#include "Game.h"

//other.cpp
#include "Game.h" 
#include "other.h"

//#define MAX_PLAYER = 10 将会被调用两次,报错重复定义

解决

//C++标准ifndef define 和 endif
#ifndef GAME_H
#define GAME_H

//或者使用pragma预编译指令
#pragma once  //不仅编译一次,而且可以防止文件被打开两次 


#endif


pragma缺点

不是所有跨平台编译器可以识别它,不是C++标准的一部分。最主要pragma的特点是防止文件被打开两次。可以与ifndef一起使用

头文件的包含指令

  • 不必要的include需要删除

头文件的包含指令的唯一原因是,头文件中要用到某些在包含文件中声明的内容。

  • 继承是必须包含父类的头文件的,因为需要看到父类的全部内容才能正确构造派生类
  • 如果没有继承,只使用其他类的指针和引用,只需要使用前向声明。
//C.h
class Aclass C
{
private:
	A* mA1;
	A& mA2; 
	//A mA3; //错误的
};

//注意当从文件中删除#include 语句时,实现文件需要添加它们
//C.cpp
#include "C.h"
#include "A.h"

头文件放在.cpp实现文件的好处

  • 避免在编译过程中,打开头文件多次

预编译的头文件

C++11有着很多标准库需要引用,有时候必须引用很多次,所以需要一个预编译的头文件来只对它们编译一次的操作。

问题

  • 虽然只编译一次,但是有时候没用的头文件也会被包含进去。

C++游戏编程第十五章

猜你喜欢

转载自blog.csdn.net/weixin_44200074/article/details/106056521