#ifdef和#if defined都可以用来判断单个宏是否被定义,而且由于#ifdef比较简洁,因而得到广泛的使用,那为啥还需要#if defined呢?
对于多个宏判断,就必须使用#if defined功能了,例如
#ifdef A && #ifdef B
上述这种定义方式是不正常的,而应该定义成 #if ( defined A) && (defined B)
综上所述,#ifdef是#if defined的简化版,只是判断单个宏是否被定义时可用#ifdef,其它复杂条件都得用#if defined。