zoukankan      html  css  js  c++  java
  • 条件编译#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++中所有以#开头的都是预编译指令,就是在正式编译之前,让编译器做一些预处理的工作

  • 相关阅读:
    (转+原)python中的浅拷贝和深拷贝
    (原)torch7中添加新的层
    (原+转)ubuntu终端输出彩色文字
    (原)torch中显示nn.Sequential()网络的详细情况
    (原)python中使用plt.show()时显示图像
    eclipse 注释模板
    leetcode 11 最大盛水容器
    leetcode 9 回文数字
    leetcode8 字符串转整数
    利用Intent启动activity的例子
  • 原文地址:https://www.cnblogs.com/zidiancao/p/4023775.html
Copyright © 2011-2022 走看看