C++预处理器#include

标签 c++ header include header-files

我正在尝试将我的程序制作成多种语言,开始时会询问用户是想要语言 1 还是语言 2。用户输入存储在一个变量中,然后使用 if 语句我得到用户选择的语言。

像这样:

std::cin >> language;

if(language == ENGLISH)
     {
     // Do something
     }
else if(language == SPANISH)
     {
     // Do something else
     }

我接下来做的是将我想要翻译的每个函数存储到两个头文件中,一个是英语,一个是西类牙语,两个头文件完全相同,除了每个输出都被翻译。

现在我做的是这样的

std::cin >> language;

if(language == ENGLISH)
     {
     #include "English.h"
     }
else if(language == SPANISH)
     {
     #include "Spanish.h"
     }

现在,#include 是一个预处理器指令,所以它会在主函数之前“执行”,有什么办法解决这个问题吗?

最佳答案

Now, #include is postprocessor directive so it gets "executed" before the main function

这是一个处理器指令。它不是在运行时“执行”的;编译前对源代码进行预处理。

any way around this ?

程序编译执行后无法运行预处理器。

更好的方法是不复制函数定义,而是在打印输出之前调用一个函数来翻译消息。此翻译函数应将参数字符串映射到翻译后的字符串。

关于C++预处理器#include,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54693213/

相关文章:

c++ - 在 C++ 中设计多维数组

c++ - 为什么非静态变量不能驻留在头文件中?

android,如何将一个 XML 文件包含到另一个 XML 文件中?

c++ - new int[][] 在 C++ 中是有效的吗?

c++ - 如何使用 C++ 和 Windows API 将击键/消息发送到 Windows 7?

c++ - 如何使用 std::function 自动扣除参数和返回类型的 lambda?

html - 如何更改 Blogger 标题的 z-index

android - 如何使用 iText 库在动态 pdf 中添加页眉和页脚?

C++ : How to include boost library header in VC++6?

android - 在c编程中包含在android studio中不起作用的file.h(使用SDL2)