条件编译指令

a.第一种形式:

       #if  常量表达式         

  b.第二种形式:

 #if   常量表达式

       #else

  c.第三种形式:

  #if 常量表达式1

                 程序正文1        //当“ 常量表达式1”非零时本程序段参与编译

       elif 常量表达式2

                程序正文2        //当“常量表达式1”为零、“ 常量表达式2”非零时本程序段参与编译

        ...

       elif 常量表达式n

                程序正文n        //当“常量表达式1”、...、“常量表达式n-1”均为零、“ 常量表达式n”非零时本程序段参与编译

       #else

                程序正文n+1      //其他情况下本程序段参与编译

       #endif

       d.第四种形式:

 #ifdef 标识符

                程序段1

       #else

                程序段2

       #endif

       如果“标识符”经#defined定义过,且未经undef删除,则编译程序段1,否则编译程序段2。

       e.第五种形式:

       #ifndef 标识符

                  程序段1

       #else

                  程序段2

       #endif

       如果“标识符”未被定义过,则编译程序段1,否则编译程序段2。

       4.define操作符

       define是预处理操作符,不是指令,所以不能用#开头。使用形式为:define(标识符)。如果括号里的标识符用#define定义过,并且没有用#undef删除,则define(标识符)为非0,否则为0。可以这样使用:

        #if !define(HEAD_H)

        #define HEAD_H

       我们在包含头文件时,有时多次重复包含同一个头文件,比如下面这种情况:

        // main.cpp文件

       #include "file1.h"

       #include "file2.h"

       int main()

       {

              …

       }

       // file1.h文件

       #include "head.h"

        …

       // file2.h文件

       #include "head.h"

        …

       // head.h文件

        ...

       class A

       {

              ...

       }

       ...

       main.cpp包含了file1.h文件,file1.h又包含了head.h文件,main.cpp还包含了file2.h文件,file2.h也包含了head.h文件,那么main.cpp就包含了两次head.h文件,在编译时就会报错,说head.h中的类A重复定义了。这时我们可以在被重复包含的文件head.h中使用条件编译指令,用一个唯一的标识符来标识head.h文件是否已经编译过,如果已经编译过则不会重复编译了。鸡啄米给大家改写下上面的head.h文件:

       // head.h文件

       #ifndef HEAD_H

       #define HEAD_H

       ...

       class A

       {

            ...

       }

       ...

       #endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值