gpt4 book ai didi

C++ 条件包含文件运行时

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:33 29 4
gpt4 key购买 nike

我正在开发一个用 C++ 编码的游戏,我希望能够在运行时更改语言。目前,语言是在编译时通过包含头文件(具有语言定义)来选择的,如下所示:

#include "lan_eng.h"

因此,一旦客户端编译完成,游戏就不允许更改语言。我的问题是是否有一种方法可以在运行时有条件地包含文件?我是 C++ 的新手,所以起初我想我可以做这样的事情:

#define DEF_LANGUAGE_ENG
//#define DEF_LANGUAGE_DEN

#ifdef DEF_LANGUAGE_ENG

#include "lan_eng.h"

#endif

#ifdef DEF_LANGUAGE_DEN

#include "lan_den.h"

#endif

当然这样更容易维护,但问题是我认为它只在编译时有效。我希望能够将所选语言存储在一个变量(在运行时更改)中,然后使用该变量来选择要包含的头文件。有没有办法用头文件做到这一点,或者我会被迫制作一个类吗?

我希望这不是一个愚蠢的问题;我的搜索没有给我希望的结果。

提前致谢!

最佳答案

您不能在运行时更改#include,因为它们仅在编译时进行评估。

您可以做的是拥有“语言表”。您可以构建一个在运行时引用的系统,或者您可以拥有多个文本文档(例如 .xml 文件),当您想要更改语言时可以读取和存储这些文档。这样做还允许您的应用程序在未来被软件用户扩展,因为它不会被硬编码。

如果您以这种方式设计它,您可以将所有“语言表”保存在一个文件夹中,然后让您的程序检查该文件夹中所有可用的语言表。这将允许用户也向您的程序添加语言。

您基本上需要做的是创建一个字符串表,这可以作为硬编码方法的一部分来完成,也可以作为更动态的方法(在语言表中提及)的一部分来完成。

关于C++ 条件包含文件运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8930360/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com