此文参考了网上的一些资料,因为实际工作中自己也确实遇到过该问题,故在参考前人的基础上进行了迭代更新。
最近在写代码时发现使用宏控时既有用#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