【发布时间】:2014-12-17 02:04:45
【问题描述】:
我目前在我的 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 之后,我尝试编译我的解决方案,并且在 cmets 中报告了上述两个错误。
我希望通过上述方式使用#ifdef 和#endif 找出我是否做错了什么。当我试图在我之前发布的问题中测试一位 SOF 成员的建议时:How to compile source code separately in c++。谢谢!
【问题讨论】:
-
你是否真的包含了声明
MyNameSpace::CheckSomething的头文件? -
这篇文章中没有足够的代码near 来确定真正出了什么问题。发布一个完整的MCVE并展示您遇到的问题。
-
我意识到错误是由于某些标头未正确包含引起的。我还包含了#ifdef 包含指令来屏蔽头文件,因为不满足包含条件,因此现在不再包含以前包含的一些必要的头文件。我通过在基类中添加必要的头文件解决了这个问题。谢谢你们的建议!
标签: c++ namespaces conditional-compilation