基本一样的,前者的应用更灵活,至少它支持布尔操作比如&&,||,是吧? 你可以参考一下: 谁知道#ifndef 和#if !define 的区别? 如果没有区别的话,应该怎么用? --------------------------------------------------------------- 基本上一样,不过后者的应用范围更大,可以支持多个预编译变量的检查: #if (!defined(_DEBUG) && defined(USE_MYLIB)) .......... #endif 这种情况用前一种方式就只能写一个嵌套的条件判断: #ifndef _DEBUG #ifdef USE_MYLIB ................ #endif #endif