C ++预处理器#include

时间:2019-02-14 14:53:32

标签: c++ header include header-files

我正在尝试将我的程序制作成多种语言,一开始,系统会询问用户是否要使用language1或language2。用户输入存储在变量中,然后使用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是一个预处理程序指令,因此可以在主函数之前“执行”,是否可以解决此问题?

1 个答案:

答案 0 :(得分:2)

  

现在,#include是后处理器指令,因此它会在主要功能之前“执行”

这是 pre 处理器指令。它不是在运行时“执行”的。在编译之前对源进行了预处理。

  

可以解决这个问题吗?

在编译并执行程序之后,无法运行预处理器。

更好的方法是不复制函数定义,而是在打印输出之前调用函数以转换消息。此翻译功能应将参数字符串映射为已翻译的参数字符串。