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

  • 相关阅读:
    12款响应式的 jQuery 旋转木马(传送带)插件
    CSS预处理器实践之Sass、Less大比拼[转]
    jQuery学习笔记
    7件你不知道但可以用CSS做的事
    纯js页面跳转整理
    JavaScript中this的工作原理以及注意事项
    CSS Hack大全-可区分出IE6-IE10、FireFox、Chrome、Opera
    为现代JavaScript开发做好准备
    15 个最佳的 jQuery 表格插件
    全栈式JavaScript
  • 原文地址:https://www.cnblogs.com/zidiancao/p/4023775.html
Copyright © 2011-2022 走看看