条件编译:#if #ifdef #ifndef #elif #else #endif的用法

条件编译便于后期维护代码以及方便修改条件判断。

/*******************************************************/

#define            定义一个预处理宏
#undef            取消宏的定义

#if                   编译预处理中的条件命令,相当于C语法中的if语句
#ifdef              判断某个宏是否被定义,不能或运算,若已定义,执行随后的语句
#ifndef            与#ifdef相反,判断某个宏是否未被定义,不能或运算
#elif                若#if, #ifdef, #ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语                           法中的else-if
#else              与#if, #ifdef, #ifndef对应, 若这些条件不满足,则执行#else之后的语句,相当于C语                         法中的else
#endif             #if, #ifdef, #ifndef这些条件命令的结束标志.
defined           与#if, #elif配合使用,判断某个宏是否被定义

/*********************************************************************/

这些条件编译有以下三种组合使用:

1、

#if defined(或者是ifdef)<标识符(条件)>           //如果标识符(条件为真)被定义则执行程序段1

    <程序段1>

#else                                                                 //否则执行程序段2
    <程序段2>                                        

#endif                                                               //条件结束
2、
#if !defined(或者是ifndef)<标识符(条件)>       //如果标识符(条件为假)没有被定义则执行程序段1

    <程序段1> 

#else                                                                 //否则执行程序段2
    <程序段2>

#endif                                                                //条件结束
3、

#ifdef (或者是if defined()<标识符(条件)>    //如果标识符(条件为真)被定义则执行程序段1

                 <程序段1>

#elif <标识符(条件)>       //如果上个标识符没有被定义,判断此定义是否被定义,是则执行程序段2

                 <程序段2>

#elif <标识符(条件)>       //如果上个标识符没有被定义,判断此定义是否被定义,是则执行程序段3

                 <程序段3>

#else <标识符(条件)>     //如果上个标识符没有被定义,判断此定义是否被定义,是则执行程序段4

                 <程序段4>

#endif                                                                //条件结束

其中#endif作为结尾,每种方式都得用到!

你可能感兴趣的:(STM32,c语言,开发语言,stm32,单片机)