• C程序设计语言--宏定义


    C语言中的宏定义

    C语言中的宏定义也叫做预处理命令,预处理命令是C语言本身的组成部分,不能直接对它们进行编译。

    1.基本概念;

    1>预处理不是C语句,是在编译前进行的

    2>预处理功能主要用于下3种情况:

    Ø  宏定义

    Ø  文件包含

    Ø  条件编译

    3>宏是在编译前进行的,程序不能直接对它们进行编译,由预处理程序先进行替换。

    说明:

    Ø  一个预处理命令占用一个单独的行,命令末尾不使用分号作为结束符。

    Ø  宏定义是专门用于预处理命令的一个专用名词,它与定义变量的含义不同,它只做字符替换,不分配内存空间。

    2.不带参数的宏

    1>用一个指定的标识符(即名字)来代替一个字符串,它的一般形式为

    #define  标识符   字符串

    Eg:

    #define  MAX_NUM    100

    它的作用是在本程序文件中使用指定的标识符MAX_NUM来替代  100这个字符串。

    2>宏定义是用宏名代替一个字符串,也就是做简单的置换,不做正确性检查。(预编译时不做任何语法检查,只有在编译已被宏展开后的源程序时才会发现语法错误并报错)

    3>宏定义不是C语句,不必在行末加分号。如果加了分号则会连分号一起进行替换

    4>#definde出现在A处,则宏名的有效范围为定义命令之后到本源文件之后到本源文件结尾。

    5>可以通过#undef命令终止宏定义的作用域.

    #define MAX_NUM  100;

    Void  main()

    {

           …………………….               MAX_NUM的作用范围

           ………………….

    };

    #undedf  MAX_NUM

    f()

    {

      ………………………….

      …………………………

    }

    说明:当解除宏定义时,只需要指出宏标识符而不必给出后面的字符串。

    6>在进行宏定义时,可以引用已定义的宏名,可以层层置换(即宏可以嵌套)

    #define  PI  3.141596

    #define  R   3.0

    #define  L   2*PI*R

    #define  S   PI*R*R

    7>对程序中使用双引号括起来的字符串,即使与宏名相同,也不进行置换。

    eg;

    printf(“L =%f ,s=%f ”,L,S);

    在printf中双引号内的L不进行替换,双引号外的进行替换。

  • 相关阅读:
    宋浩《概率论与数理统计》笔记---6.2.1、统计量定义
    宋浩《概率论与数理统计》笔记---6.1、总体与样本
    宋浩《概率论与数理统计》笔记---5.2、中心极限定理
    PHP使用curl替代file_get_contents
    PHP中的ini_set() 函数
    通俗理解中心极限定理
    宋浩《概率论与数理统计》笔记---5.1.2、切比雪夫大数定理
    Options / Lifecycle Hooks
    idea各种图标的含义
    Gradle 基础入门
  • 原文地址:https://www.cnblogs.com/riskyer/p/3358153.html
Copyright © 2020-2023  润新知