设置OS Flag以测试OS特定功能

时间:2016-12-15 17:44:53

标签: c++ c-preprocessor

为什么这不起作用(它没有断言......我不想让它执行)?

#define OS_MACOSX 0

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

1 个答案:

答案 0 :(得分:3)

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

OS_MACOSX已定义到0。您询问它是否已定义。请改为询问它是否设置

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

如果将其定义为评估为零或根本未定义的内容,则#if将跳过代码。任何非零值,并且满足#if条件并编译代码。

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