设置操作系统标志来测试操作系统的具体功能

问题描述:

为什么不能正常工作(它无法断言...我不希望它执行)?设置操作系统标志来测试操作系统的具体功能

#define OS_MACOSX 0 

#if defined(OS_MACOSX) 
    fructose_assert(1==2); 
#endif 
+0

你定义的东西,然后检查是否被定义,但不知道为什么能产生如此?我不明白你为什么感到困惑。 –

因为您使用的是错误的测试。

OS_MACOSX IS被定义为...到0。你问是否是定义为。而不是询问如果是设置

#if OS_MACOSX 
    fructose_assert(1==2); 
#endif 

如果它被定义的东西,计算结果为零,或者根本没有定义,则#if将跳过代码。任何非零值,并且#if条件已满足且代码已编译。

请参阅此相关的问题:Why do people use #ifdef for feature flag tests?

+0

是的,你是对的。谢谢! – user3564870