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

时间:2014-12-17 02:04:45

标签: c++ namespaces conditional-compilation

我目前在我的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成员的建议时,我之前发布过:How to compile source code separately in c++。谢谢!

1 个答案:

答案 0 :(得分:0)

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

我已经包含#ifdef inclusions指令来屏蔽头文件,因为现在不再包含一些必要的头文件,因为不满足包含条件。

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