zoukankan      html  css  js  c++  java
  • 预编译


    (1)      宏定义

    1.不带参数的宏定义

    用一个宏名代替一个字符串,只进行简单的代换,不进行任何计算,也不进行正确性检查,双引号内的宏名不进行代换,宏名一般用大写表示。

    #define PI 3.1415926

    #define定义有效范围是定义处到源文件结束,通常写在文件开头,函数前,在此文件内有效。

    #define PI 3.1415926

    int main()

    {

      return 0;

    }

    int main()

    {

      #define PI 3.1415926

     return 0;

    }

    可以用#undef命令结束作用域。

    #define PI 3.1415926

    int main()

    {

      return 0;

    }

    #undef PI

    进行宏定义时,可以用已定义宏名,层层代换。

    #define R 1

    #define PI 3.1415926

    #define L2*PI*R

    2.带参数的宏定义

    #define 宏名(参数表) 宏体

    #define MUL(a, b) a*b

    #define ADD(x, y) x+y

    eg:sum = ADD(1, 2); 则被替换成sum = 2 + 4;

      sum = ADD(a+2, b+3);  sum = a + 2 + b + 3;

      t =MUL(a+1, b+1);  t = a+1*b+1;

    注意:宏名与左括号之间不能出现空格。字符串中与参数名相同的字符序列适当的加上圆括号,这样可以避免代换后优先级上产生问题。

    eg:#define MUL(x) (x)*(x)

    #define MUL(x)((x)*(x))

    (2)条件编译

    利用条件编译可以使同一个源程序在不同条件下产生不同代码,来完成不同功能。利用条件编译可在调试程序时添加一些调试语句,以达到跟踪目的,但程序调试好后,重新编译时,使调试语句不参与编译。

    1.#ifdef 宏名

         程序段1

     (#else  程序段2)

    #endif

    其功能为如果宏名已定义,则编译程序段1,否则程序段2.可提高程序通用性。

    eg:#ifdef COMPUTER

         #define INTEGER_SIZE 16

    #else

      #define INTEGER_SIZE 32

    #endif

    只要COMPUTER被宏定义过,则编译后INTEGER_SIZE被 16代替。

    2. #ifdnef 宏名

         程序段1

     (#else  程序段2)

    #endif

    如果宏名没被定义则编译程序段1

    3.#if 表达式

        程序段1

     [#else 程序段2]

    #endif

    表达式是一个常量表达式,其功能为:如果表达式的值不为0,则编译程序段1;否则,段2,各种条件编译可嵌套使用。

    eg:#if x > 4

         #if x > 4 && x < 8

             int x = 5;

         #else

             int x = 2;

         #endif

    #else

      int x = 100;

    #endif

      

  • 相关阅读:
    数组和排序算法(冒泡、选择、插入排序)
    异常
    线程的五个状态,sleep和wait
    ArrayList、Vector、LinkedList
    String,StringBuffer,StringBuilder的区别
    Math.round(),Math.ceil(),Math.floor()的区别
    单例模式之双重锁模式、静态内部类模式、饿汉模式、懒汉模式,和安全的懒汉模式
    工厂模式简单的汽车工厂
    存储过程的优点
    数据库SQL特点数据查询,数据操纵,数据定义,数据控制,建立索引, 事务acid,数据库隔离级别
  • 原文地址:https://www.cnblogs.com/seebro/p/2476525.html
Copyright © 2011-2022 走看看