c++ 条件包含指令中是否允许命名空间

Are namespace allowed in c++ conditional inclusions directive?

本文关键字:命名空间 是否 条件 包含 指令 c++      更新时间:2023-10-16

我目前在我的 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++ 中单独编译源代码。谢谢!

我意识到错误是由某些标题未正确包含引起的。

我也包含了 #ifdef 包含指令来屏蔽头文件,因此以前包含的一些必要的标头现在不再包含在内,因为不满足包含条件。

我已经通过在基类中添加必要的头文件来解决此问题。