C ++ препроцессор #include - PullRequest
       51

C ++ препроцессор #include

0 голосов
/ 14 февраля 2019

Я пытаюсь сделать мою программу на нескольких языках, при запуске пользователя спрашивают, хочет ли он 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 голосов
/ 14 февраля 2019

Теперь, #include - это директива постпроцессора, поэтому она "выполняется" перед основной функцией

Это директива процессора pre .Он не «выполняется» во время выполнения;Исходный код предварительно обрабатывается перед компиляцией.

как-нибудь об этом?

Невозможно запустить препроцессор после компиляции и выполнения программы.

Лучший подход состоит в том, чтобы не дублировать определения функций, а вместо этого вызывать функцию для перевода сообщений перед выводом на печать.Эта функция перевода должна отобразить строку аргумента в переведенную.

...