• 预编译



    (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

      

  • 相关阅读:
    fastclick.js插件使用
    iphone X 的适配
    常用js方法整理
    gulp(1) 的使用
    C# Datatable 添加列
    Microsoft visual studio已停止工作最全解决办法
    微服务
    获取指定页的记录
    谷歌浏览器安装ie_tab()报错The 'manifest_version' key must be present and set to 2 (without quotes)的解决办法
    Javascript常用代码汇总
  • 原文地址:https://www.cnblogs.com/seebro/p/2476525.html
Copyright © 2020-2023  润新知