我正在开发一个用C++编码的游戏,我希望能够在运行时更改语言.目前,语言是在编译时通过包含头文件(具有语言定义)来选择的,如下所示:
#include "lan_eng.h"
Run Code Online (Sandbox Code Playgroud)
因此,一旦编译了客户端,游戏就不允许更改语言.我的问题是,是否有一种方法可以在运行时有条件地包含文件?我是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
Run Code Online (Sandbox Code Playgroud)
当然这使得维护更容易,但问题是我相信它只能在编译时工作.我希望能够将所选语言存储在变量中(在运行时更改),然后使用该变量来选择要包含的头文件.有没有办法用头文件来做这个,还是我会被迫上课?
我希望这不是一个愚蠢的问题; 我的搜索没有给我我希望的结果.
提前致谢!
您不能在运行时更改#include,因为它们仅在编译期间进行评估.
你可以做的是拥有"语言表".您可以构建在运行时引用的系统,也可以在需要更改语言时读取和存储多个文本文档(如.xml文件).这样做也可以使您的应用程序在将来被软件用户扩展,因为它不会被硬编码.
如果您以这种方式设计它,您可以将所有"语言表"保存在一个文件夹中,然后让程序检查所有可用语言表的文件夹.这将允许用户也为您的程序添加语言.
您基本上需要做的是创建一个字符串表,可以作为硬编码方法的一部分,或作为更动态的方法(作为语言表提到)的一部分.
| 归档时间: |
|
| 查看次数: |
6159 次 |
| 最近记录: |