zoukankan      html  css  js  c++  java
  • 条件编译#ifndef

    (源自:百度百科)

    定义:

    #ifndef x   //if not define的简写
    #define x
     ...
    #endif

    这是宏定义的一种,它可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等.实际上确切的说这应该是预处理功能中三种(宏定义,文件包含和条件编译)中的一种----条件编译。 C语言在对程序进行编译时,会先根据预处理命令进行“预处理”。C语言编译系统包括预处理,编译和链接等部分。

    #ifndef x   //先测试x是否被宏定义过
    #define x
     程序段1   //如果x没有被宏定义过,定义x,并编译程序段1
    #endif

    程序段2   //如果x已经定义过了则编译程序段2的语句,“忽视”程序段1。

    条件指示符#ifndef 的最主要目的是防止头文件的重复包含和编译。了解:条件编译当然也可以用条件语句来实现。 但是用条件语句将会对整个源程序进行编译,生成的目标代码程序很长,而采用条件编译,则根据条件只编译其中的程序段1或程序段2,生成的目标程序较短。如果条件选择的程序段很长,采用条件编译的方法是十分必要的。

    条件编译的命令的三种形式:

    “ 条件编译”命令允许对程序中的内容选择性地编译,即可以根据一定的条件选择是否编译。条件编译的命令主要有以下几种 :


    形式1
      #ifdef 标识符
       程序段 1
      #else
       程序段 2
      #endif
      它的作用是当 “ 标识符”已经由# d e f i n e定义过了。则编译“ 程序段 1 ” 。 否则编译“ 程序段 2 ” 。其中如果不需要编译“ 程序段 2 ”。则上述形式可以变换 为:

      #ifdef 标识符
       程序段 1
      #endif

    形式2
      #ifndef 标识符
      # define 标识符
       程序段 1
      #else
       程序段 2
      #endif
      它的作用是当 “ 标识符 没有由# d e f i n e定义过。 则编译“程序段 1”。否则编译“程序段 2” 。同样当无“ 程序段2 ”时。则上述形式变换为:

      # ifndef 标识符
      # define 标识符
       程序段 1
      #endif

    形式3
      #if 表达式
       程序段 1
      #else
       程序段 2
      #endif
      它的作用是 当“表达式”值为真时。编译程序段1。否则则编译程序段2。同样 当无程序段 2时,则上述形式变换 为 :

      #if 表达式
       程序段 1
      #endif

    以上三种形式的条件编译预处理结构都可以嵌套使用。 当# e l s e后嵌套 # i f 时,可以使用预处理命令 # e l i f , 它相当于 # e l s e# i f 。在程序中使用条件编译主要是为了方便程序的调试和移植。

    **************************************************************
    我喜欢程序员,他们单纯、固执、容易体会到成就感;面对困难,能够不休不眠;面对压力,能够迎接挑战。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想,用智慧把属于自己的事业开创。其实我是一个程序员
    [=.=]
  • 相关阅读:
    linux 命令——48 watch (转)
    linux 命令——47 iostat (转)
    linux 命令——46 vmstat(转)
    linux 命令——45 free(转)
    linux 命令——44 top (转)
    linux 命令——43 killall(转)
    linux 命令——42 kill (转)
    linux 命令——41 ps(转)
    linux 命令——40 wc (转)
    Java for LeetCode 068 Text Justification
  • 原文地址:https://www.cnblogs.com/kevinGaoblog/p/2549321.html
Copyright © 2011-2022 走看看