Разрешено ли пространство имен в директиве условных включений C++?

В настоящее время у меня есть эта проблема с использованием директивы условных включений в моем проекте C++. Я хотел бы обратиться за советом к сообществу, чтобы узнать, действительно ли мне разрешено делать что-то подобное.

Мой псевдокод выглядит следующим образом:

BOOL myLogic(){

  #ifdef GlobalVar1
    if(MyNameSpace::CheckSomething()) //Compiler complains that 'MyNameSpace' is not a class or namespace name
    {
      MyClass myCls;
      myCls.doSomething();
    }
    else
    {
      ErrorLog(ERROR_CHECKINGSOMETHING); //Compiler complains that ERROR_CHECKINGSOMETHING as undeclared idenifier
    }
  #endif

  #ifdef GlobalVar2
    ...
  #endif
}

У меня объявлено около 20 условных включений, и после определения моего выбранного GlobalVar я попытался скомпилировать свое решение, и в комментариях было сообщено о двух ошибках, как указано выше.

Я хотел бы узнать, сделал ли я что-то не так, используя #ifdef и #endif вышеописанным способом. Поскольку я пытался проверить предложение другого члена SOF в моем вопросе, который я ранее опубликовал: Как скомпилировать исходный код отдельно в C++. Спасибо!

1 ответ

Я понял, что ошибка была вызвана тем, что некоторые заголовки не были включены должным образом.

Я включил директиву #ifdef включения для маскировки заголовочных файлов, так как некоторые из необходимых заголовков, которые ранее были включены, теперь больше не включаются, так как условие включения не выполняется.

Я решил проблему, добавив необходимые файлы заголовков в базовый класс.

Другие вопросы по тегам