#ifdef和#if defined的区别
#ifdef和#if defined他们都可以用来判断单个宏是否被定义,所以常常在这种情况,我常常使用#ifdef。也因为如此,导致我忽略了#if defined的存在。
凡事总有例外,当我在移植429总线的时候,我看到了以下代码:
#if defined(SM429_LABEL) && (0 != SM429_LABEL)
这个代码,不仅仅只是判断单个宏是否被定义,而是还有更复杂的条件判断等,以此来组成复杂的预编译条件时,#ifdef是不可行的,这时候便是#if defined闪亮登场的时候了!
因此区别就很明显了
#ifdef是#if defined的功能简化版,只是判断单个宏是否被定义时可用#ifdef,其它复杂条件都得用#if defined。