#ifdef和#if defined的异同

来源:互联网 发布:js多选框 编辑:程序博客网 时间:2024/06/10 22:24

        最近在看代码时发现使用宏控时既有用#ifdef  MACRO,也有的用#if  defined(MACRO),那么两者之间到底是什么关系呢,是不是一样的?仔细查了一下,发现有相同亦有不同之处:

#ifdef  MACRO和#if  defined(MACRO)都是预处理运算符

对于判断单个情况下两者是相同的,比如:

#ifdef  MACRO== #if  defined(MACRO)

#ifndef  MACRO== #if  !defined(MACRO)

而在需要复杂的编译条件情况下#if  defined(MACRO)的优势就很明显了:

情况一:表达式形式

#if  defined(MACRO1) && defined(MACRO2) && defined(MACRO3)......

......

#endif

如果你不怕麻烦也可以这样使用

#ifdef  MACRO1

#ifdef  MACRO2

#ifdef  MACRO3

......

#endif

#endif

#endif


#if  defined(MACRO1) || defined(MACRO2) || defined(MACRO3)......

......

#endif

这种情况就不能用#ifdef代替了

情况二:多条件选择情况下两者的使用方式

前者

#ifdef  MACRO1

......

#else

......

#endif

后者

#if  defined(MACRO1)

......

#elif  defined(MACRO2)

......

#elif  defined(MACRO3)

......

#endif

总的来说,#if  defined(MACRO)的功能更强大,使用更广泛

0 0
原创粉丝点击