首页 > 其他分享 >#if、#else、#endif、#elif、#ifdef、#ifndef的区别和使用

#if、#else、#endif、#elif、#ifdef、#ifndef的区别和使用

时间:2023-07-06 14:34:03浏览次数:33  
标签:elif 代码 endif else 编译 ifdef

常用的条件编译

#if, #elif,#else,#endif,#ifdef、#ifndef

看名字就知道,跟我们平时用的if、elseif、else是 一样的,不同的是这里一定要记得 #endif。

  1.  
    #if 条件 1
     
     代码 1
     
    #elif 条件 2
     
     代码 2
     
    #else
     
     代码段 n+1
     
    #endif

     

  • 意思跟我们平常写的代码一样,如果条件1成立,则编译代码1,如果条件二成立,则编译代码2,否则编译代码3.
  • 预编译指令中的这里的条件(表达式)与C语言本身的表达式基本一至如逻辑运算、算术运算、位运算等均可以在预编译指令中使用。
  • C语言的代码是先编译再执行(OC/C++也是),预编译指令是在编译之前处理的,通过预编译进行宏替换、条件选择代码段,然后生成最后的待编译代码,最后进行编译。
  • 务必不能忘了#endif。

1.#if的使用

  1.  
    #if 表达式
     
    代码
     
    #endif

     

if的后面接的是表达式,如果表达式成立,那么就会把代码编译进去,(注意:是编译进去,不是执行)

2.#if defined的使用

  1.  
    #if defined (宏)
     
    代码.
     
    #endif

     

这个#if后面接的是一个宏,意思是前面的宏定义里面有没有定义这个宏,如果定义了,编译器就会编译中间的代码,如果没有定义,那就不会编译,不管这个宏定义的是什么东西,对不对等。

#ifdef的使用

ifdef的使用和#if defined()的用法是一样的。

ifndef又和#if !defined()的用法一样(取反的意思)。

 

标签:elif,代码,endif,else,编译,ifdef
From: https://www.cnblogs.com/mokongking/p/17532060.html

相关文章

  • 循环语句 + else
    说明除了if可以跟else搭配使用,while、for也可以与else搭配使用,表示循环正常结束,后执行else语句。 while-else语法1while条件:2#循环体3#在这里执行需要重复的操作4else:5#循环条件为False时执行的代码在这个语法中:条件 是一个布尔表达式......
  • java使用枚举消除 if/else
    有这样一个判断场景。if("dog".equals(animalType)){System.out.println("吃骨头");}elseif("cat".equals(animalType)){System.out.println("吃鱼干");}elseif("sheep"){System.out.println("吃草");......
  • Go 程序里 if else 分支太多?试着用策略模式治理一下吧
     原创 卡尔文_ 网管叨bi叨 2022-11-1608:45 发表于北京收录于合集#用Go学设计模式24个本周发布的设计模式文章,忘记标注原创,这里重新发布一次。本次跟大家分享的是策略模式,是一个可以减少我们在程序流程里不停堆叠ifelse的一个好办法,大家一起学一下吧。大家好,我是......
  • 【重要】Python:else的4种用法
    Python:else的4种用法━━━━━━━━━━━━━━━━━━━━━━━━━简介:与其他编程语言略有不同,python中,else除了常规的和if配合使用外,还有3种组合使用的场景。else使用场景:1、if-else2、for-else3、while-else4、try-except-else1、if-else:━━━━......
  • if、else、else if使用方法
    (文章目录)前言本文章主要介绍选择判断if、else、elseif一、只有一种情况格式:if(条件){code:代码块} 当满足条件时执行代码块,不满足条件时不执行。区间条件写法:12<a<15(false)a>12&&a<15(ture)&&代表的是且,||带表或。二、两种情况格式:if(条件){code......
  • k8s驱逐篇(6)-kube-controller-manager驱逐-NodeLifecycleController源码分析
    概述k8sv1.16版本中NodeController已经分为了NodeIpamController与NodeLifecycleController,本文主要介绍NodeLifecycleController。NodeLifecycleController主要功能有:(1)定期检查node的心跳上报,某个node间隔一定时间都没有心跳上报时,更新node的readycondition值为false或unkno......
  • 消除if else & Optional 使用
    1、三目表达式获取对象的属性,判断对象是否为空,为空返回默认值Cc=newC("c");Stringname=c!=null?c.getName():DEFAULT_NAME;2、判断不为空再赋值Useruser=userDao.getUser(id);if(user!=null){user.setName("张三");}//使用OptionalOptional.ofN......
  • oracle中if/else功能的实现的3种写法
    一、单个IF1、ifa=...then.........endif;2、ifa=...then......else....endif;二、多个IFifa=..then......elsifa=..then....endif;这里中间是“ELSIF”,而不是ELSEIF。这里需要特别注意https://www.cnblogs.com/yangzhilong/archi......
  • VBA中的选择结构If ...Then ...ElseIf...Else;Select Case...Case Else...
    IfElseIfElse结构的基本语法如下:If条件表达式1Then'表达式1真时,执行的代码ElseIf条件表达式2Then'表达式2真时,执行的代码ElseIf条件表达式3Then'表达式3真时,执行的代码...ElseIf条件表达式nThen'表达式n真时,执行的代码Else'以上表达......
  • Java8-Predicate 策略模式的替代品消灭 if else
    使用策略模式消灭ifelse,可以利用Java8的新特性来实现策略模式。利用Java8的Predicate消灭ifelse。首先定义一个map,key是不同的服务代码,value是需要做校验的条件,然后针对不同的服务代码做校验。当然Supplier、Consumer都可以做类似的实现。//定义校验的策略映射关系staticM......