为什么这不起作用(它没有断言......我不想让它执行)?
#define OS_MACOSX 0
#if defined(OS_MACOSX)
fructose_assert(1==2);
#endif
答案 0 :(得分:3)
因为您使用了错误的测试。
OS_MACOSX
已定义到0
。您询问它是否已定义。请改为询问它是否设置:
#if OS_MACOSX
fructose_assert(1==2);
#endif
如果将其定义为评估为零或根本未定义的内容,则#if
将跳过代码。任何非零值,并且满足#if
条件并编译代码。