如何处理 CPP 文件和头文件

how to handle cpp files and header files

本文关键字:文件 CPP 处理 何处理      更新时间:2023-10-16

我对标头和 cpp 文件有点问题,我开始创建一个基于文本的小游戏,我想通过为每个类(玩家.cpp、怪物.cpp实体等(创建更多文件和单独的文件来使所有工作更加清晰。

所以我最终在每个 cpp 文件中都有很多 #include 指令(我还没有使用标头(。

我需要一个 rand 函数,所以我为每个类添加了 stdlib,在播放器类中添加了 iostream 等等。

所以我最终对同一个库有很多双重和三重使用,我应该怎么做才能避免它?有什么办法可以避免它吗?(例如,为 random 创建一个单独的类是行不通的,因为我也需要以任何方式将其添加到类中(。

提前感谢!

编辑:但是如果我有这样的东西?

main.cpp -> Player.h -> stdlib.h

     -> Monster.h -> stdlib.h

我该怎么做才能使 stdlib.h 出现在所有类中而没有警告或错误?

换句话说,如何在不包含大量相同库的情况下创建标头?(玩家和怪物是不同的职业,它们都需要 stdlib,我应该怎么做才能只包含一个库?

"我还没有使用标题"是什么意思?您必须为函数声明/类定义创建标头。没有其他合理的方法。
接下来,您需要阅读有关包括警卫的信息。包含防护确保不会直接或间接多次包含标头。
在几乎所有现代编译器中,您都可以使用 #pragma once 而不是旧的#if !defined......风格。

这可能不是最好的方法,但这是我的做法我总是有一个主文件.cpp称为"MasterHeader.h"文件,在该头文件中我有所有其他头文件,所以在主文件中我只有一行调用我所有其他头,该头整理我需要的头。

所以

main.cpp> MasterHeader.h> myHeader.h,

myOtherHeader.h, thisHeader.h

如果我

弄错了,请纠正我...由于在多个点包含自己的 cpp 文件,您面临重新定义的错误。

一种方法是为需要包含在其他地方的代码文件创建一个标头,并在此标头中声明导出。确保使用预处理器为每个创建的对象定义一次导出

// some_file.h
#ifndef SOME_FILE_H
#define SOME_FILE_H
...
//export declarations
...
#endif

或者你避免包含你的代码文件,并将你需要的函数声明为"extern">

//your_functions.cpp
int some_function( int arg1 )
{
    ...
}

//other_file.cpp
extern int some_function( int );