首页 > 其他分享 >C语言--宏定义

C语言--宏定义

时间:2023-02-12 22:56:21浏览次数:41  
标签:函数 -- 代码 定义 C语言 复制粘贴 define

C语言中的宏(函数“”缺陷的补充)

  --宏是C语言中代码复用的补充方式

  --宏定义语法:#define MACRO(param) code_segment

  --宏使用语法:

    #define ADD(a, b) a + b

    ADD(1, 2)

宏与函数不同

  --宏不是函数,没有函数调用的过程

  --宏是单纯的“代码复制粘贴”,替换参数,函数调用先传递参数值,再跳转执行函数体,最后返回

  --宏,每次使用都是“复制粘贴”相同代码,而函数多次调用,执行相同的函数体代码

编译器组成简介

  --预处理模块:处理所有宏以及#开头的语句(复制粘贴替换)

  --编译模块:将C语言翻译成二进制程序

  --链接模块:将二进制程序组合成可执行程序

宏常量

  --#define NAME value;//eg: #define AGE 18;

  --宏常量再本质上与字面量相同(真正意义上的常量)

小结:

  --宏是C语言中代码复用的补充方式

  --宏不是函数,使用宏没有函数调用的过程

  --预处理模块堆宏的处理方式:复制粘贴替换

  --程序中使用宏的地方最终被处理为对应的代码片段

  --宏常量的本质就是字面量

标签:函数,--,代码,定义,C语言,复制粘贴,define
From: https://www.cnblogs.com/ysnana/p/17114909.html

相关文章

  • 基于Astar算法的栅格地图目标最短路径搜索算法MATLAB仿真,带GUI界面
    1.算法描述       Astar算法是一种图形搜索算法,常用于寻路。它是个以广度优先搜索为基础,集Dijkstra算法与最佳优先(bestfit)算法特点于一身的一种算法。它通过......
  • springboot内置的数据源,持久化技术和数据库管理工具
    我们之前用的是Druid,mybatis,mysql:   现在看看springboot内置的数据源:   内置的持久化技术jdbcTemplate:   使用这个jdbcTemplate需要导入jar包:  ......
  • 学习css的第五天~
    文本样式属性名属性属性值注释文本颜色color英文关键词、十六进制、rgb方法 文本行高line-height像素值控制行与行之间的距离对齐方式text-align......
  • 第一章 基础算法二
    高精度A+B:两个大整数相加A-B:两个大整数相减A×b:一个大整数乘一个小整数A÷b:一个大整数除以一个小整数大整数的存储:用一个数组来存大整数的每一位上的数。这......
  • 第十一届蓝桥杯题解
    第十一届蓝桥杯题解A,门牌制作签到题,利用int转换到String就可以检验每一个字符是不是2packagetrain;publicclasstest_12{publicstaticvoidmain(String[]a......
  • 基于GA算法的TSP最短路径搜索matlab仿真
    1.算法描述(1)编码:将问题的候选解用染色体表示,实现解空间向编码空间的映射过程。遗传算法不直接处理解空间的决策变量,而是将其转换成由基因按一定结构组成的染色体。编码方......
  • 单词分析
    题目描述小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完......
  • 【光敏电路】夜间指示灯光敏电路【实操 实践】
    我的临时工作台,一些装元器件及模块的盒子: 一、设计的电路图: 二、先在面包板上进行实验:夜间: 实验成功。三、进行焊接: 完成。......
  • WPF中转换与关键帧动画及报错:WPF动画找不到依赖属性:属性未指向路径“(0).(1)[3].(2)”
    WPF中的转换有://在二维x-y坐标系内围绕指定点按顺时针方向旋转对象。<RotateTransform/>//在二维x-y坐标系中平移(移动)对象。<TranslateTransform/>//......
  • 如何理解SpringBoot中的Starter
    starter可以使我们少定义一些配置比如我们使用spring+springMvc进行开发时,如果需要引入mybatis等框架,还需要再去xml中定义mybatis需要的bean。使用starter可以让我们开箱......