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