• 条件编译#if #ifdef


      近期由于一些莫名其妙的原因开始学c++,我觉得我哪天要是挂了也是被自己给折腾死的,算了,反正不是折腾死就是被淘汰,当是没事打发时间了,废话不多说,开始今天的主题。

      之前接触的注释就是注释,条件语句就是条件语句,前两天突然遇见一个很高级的术语叫做条件编译,把我理解的前因后果详细地说说清楚吧。

    一、注释

      首先从注释开始说起,注释最常见不过,我们也会经常使用,虽然不同语言有不同风格的注释方法,但是很多都是异曲同工,互相之间可以相互借鉴和参考的。C/C++最常用的注释就两种:

      1.  //单行注释

      2.  /*

           *块注释

            */

    二、预编译

      1.   接着 牵扯出类似于注释的另一种特别方法叫做:预编译屏蔽。

      格式为:

        #if  0

        #endif

      例子为:

        #if !defined(_WIN32_WCE) && defined(_DEBUG)

        //如果编译环境是WINCE,并且是debug版本,出现在这个if-endif块中的语句就会被编译,否则跳过

        #endif

      把它补充完整就是:

        #if 条件1

        代码段1

        #elif 条件2

        代码段2

        #else

        代码段n

        #endif

      这段语句与if-else的区别是,该语句是条件编译,通过预编译指令设置编译条件,在不同需要的时候编译不同的代码。而if-else则是全部编译,在运行时选择不同的分支执行。

      2.  类似的预编译处理还有宏定义

      #if defined(x)

      ...code...

      #endif

      该语句不需要对x的逻辑值进行判断,只要在程序的宏定义里面定义了x这个宏,就编译中间的code代码段,否则都不编译。取反用#if !defined(x)

       #ifdef 与 #if defined(x)作用相同

    √   #ifndef 与#if !defined(x)作用相同

      C/C++中所有以#开头的都是预编译指令,就是在正式编译之前,让编译器做一些预处理的工作

  • 相关阅读:
    android+Path+Paint+PathEffect
    阿里云 云磁盘挂载
    android+Bitmap + options
    Java反射篇学习笔记
    Java中的异常处理
    jdbc连接sql server2017进行简单的增、删、改、查操作
    浅谈java中接口与抽象类之间的异同
    关于java中的“error: bad operand types for binary operator ”
    解析Java中final关键字的各种用法
    关于java中“使用了未经检查或不安全的操作、有关详细信息,请使用 ——Xlint:unchecked重新编译”
  • 原文地址:https://www.cnblogs.com/zidiancao/p/4023775.html
Copyright © 2020-2023  润新知