广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言详细分析宏定义的使用
  • 286
分享到

C语言详细分析宏定义的使用

2024-04-02 19:04:59 286人浏览 安东尼
摘要

目录一、C语言中函数的“缺陷”二、再次理解函数三、C语言中的宏四、宏与函数的不同五、编译器组成简介六、宏使用示例七、再论宏常量八、小结一、C语言中函数的&ld

一、C语言中函数的“缺陷”

实参和形参之间仅仅是值传递,因此,函数中无法直接改变实参。

二、再次理解函数

函数是一种代码复用的手段

  • 把实现某个功能的代码片段进行封装(当作一个整体)
  • 给这个代码片段一个合适的名字(通过名字使用代码)
  • 定义参数(定义代码片段需要处理的问题)

三、C语言中的宏

  • 宏是C语言中代码复用的补充方式
  • 宏定义语法:#define MacRO(param) code_segment
  • 宏使用语法:MACRO(num);

例如:

#define ADD(a,b) a + b
int main()
{
    int z = ADD(1,2);
    printf("z = %d\n", z);
    return 0;
}

四、宏与函数的不同

  • 宏不是函数,使用宏没有函数调用的过程
  • 函数调用先传递参数值,然后跳转执行函数体,最后返回
  • 使用宏只是单纯“代码复制粘贴”,然后替换参数
  • 同一个函数,无论调用多少次,都执行相同的函数体代码
  • 同一个宏,每次使用都会“复制粘贴”相同代码

五、编译器组成简介

  • 预处理模块:处理所有宏以及#开头的语句(复制粘贴替换)
  • 编译模块:将C程序翻译成二进制程序
  • 链接模块:将二进制程序组合成可执行程序

六、宏使用示例

用一个简单的交换两个数的值作为例子:

#include <stdio.h>
#define SWAP(a, b)  {int t = a; a = b; b = t;}
int main()
{
    int x = 1;
    int y = 2;
    SWAP(x, y);   // {int t = x; x = y; y = t;}
    printf("x = %d, y = %d\n", x, y);
    return 0;
}

下面为输出结果:

七、再论宏常量

#define NAME value

  • 预处理模块将代码中出现的NAME标识符替换为value
  • 因此,宏常量在本质上与字面量相同(真正意义的常量)

八、小结

  • 宏是C语言中代码复用的补充方式
  • 宏不是函数,使用宏没有函数调用的过程
  • 预处理模块对宏的处理方式:复制粘贴替换
  • 程序中使用宏的地方最终被处理为对应的代码片段
  • 宏常量的本质就是字面量

到此这篇关于C语言详细分析宏定义的使用的文章就介绍到这了,更多相关C语言宏定义内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言详细分析宏定义的使用

本文链接: https://www.lsjlt.com/news/146760.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言详细分析宏定义的使用
    目录一、C语言中函数的“缺陷”二、再次理解函数三、C语言中的宏四、宏与函数的不同五、编译器组成简介六、宏使用示例七、再论宏常量八、小结一、C语言中函数的&ld...
    99+
    2022-11-13
  • C语言详细分析宏定义与预处理命令的应用
    目录宏定义与预处理命令预处理命令 - 宏定义定义符号常量定义傻瓜表达式定义代码段预定义的宏函数 VS 宏定义预处理命令 - 条件式编译示例宏定义与预处理命令 预处理阶段:处理宏定义与...
    99+
    2022-11-13
  • C语言#define定义宏的使用详解
    目录1.宏是什么2.宏的用法3. 宏的注意事项4. 宏和函数的区别5.命名要求6. 条件编译常见条件编译指令及应用场景1.宏是什么 #define 机制包括了一个规定,允许把参数替换...
    99+
    2022-11-13
    C语言#define定义宏 C语言 #define
  • C语言宏定义#define的使用
    目录无参宏定义定义形式 带参宏定义定义形式#和##运算 #运算 用法:##运算 用法:变参宏#ifndef 条件编译    ...
    99+
    2022-11-12
  • C语言中的内联函数(inline)与宏定义(#define)详细解析
    先简明扼要,说下关键:1、内联函数在可读性方面与函数是相同的,而在编译时是将函数直接嵌入调用程序的主体,省去了调用/返回指令,这样在运行时速度更快。2、内联函数可以调试,而宏定义是不...
    99+
    2022-11-15
    内联函数 宏定义
  • C语言宏定义怎么使用
    这篇文章主要讲解了“C语言宏定义怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言宏定义怎么使用”吧!一、C语言中函数的“缺陷”实参和形参之间仅仅是值传递,因此,函数中无法直接改变...
    99+
    2023-06-30
  • C/C++宏定义的可变参数详细解析
    编写代码的过程中,经常会输出一些调试信息到屏幕上,一般会调用printf这类的函数。但是当调试解决之后,我们需要手工将这些地方删除或者注释掉。最近在看《Linux C编程一站式学习》...
    99+
    2022-11-15
    宏定义 可变参数
  • 详解C语言#define预处理宏定义
    目录#define介绍: #define宏定义无参的一般形式为:#define  标识符 常量 #define宏定义有参的一般形式为:#define  标识符(参...
    99+
    2022-11-12
  • C语言宏定义的扩展定义讲解
    目录1. 常量宏定义2. 定义宏函数3. 宏定义和#号结合4. 宏定义和两个#结合5. 宏定义和do…while()的结合6. #ifdef…#else&...
    99+
    2022-12-27
    C语言宏定义 C语言宏定义扩展
  • C语言宏定义的用法是什么
    C语言宏定义是一种预处理指令,用于在程序编译之前进行文本替换。宏定义可以将一个标识符(通常是一个函数或常量)替换为指定的代码段或值。...
    99+
    2023-10-11
    c语言
  • C语言超详细讲解宏与指针的使用
    目录1、关于define2、初识指针(1)内存(2)示例(3)指针的使用示例(4)指针变量的大小1、关于define define是一个预处理指令,有两种用法,一种是用define定...
    99+
    2022-11-13
  • C语言算法的定义及分析详解
    目录算法的定义算法和程序的区别算法程序算法的性质算法的表示算法的分析分析原则常用的复杂性函数算法分析基本法则非递归算法:总结算法的定义 算法是一系列良定义的计算步骤 算法和程序的区别...
    99+
    2022-11-12
  • C语言中#define在多行宏定义出错的原因及分析
    目录C语言中#define在多行宏定义出错的原因1.第一种错误2.第二种错误使用#define宏定义的几个小技巧1.调试开关2.条件编译3.宏实现函数4.跨行宏定义5.防止头文件被重...
    99+
    2023-02-24
    C语言#define 多行宏定义出错 C语言多行宏定义
  • C语言宏的定义与使用方法是什么
    本文小编为大家详细介绍“C语言宏的定义与使用方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言宏的定义与使用方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、C语言中的宏定义#define...
    99+
    2023-06-30
  • C语言深入分析函数与宏的使用
    目录一、函数与宏二、宏的妙用三、小结一、函数与宏 宏是由预处理器直接替换展开的,编译器不知道宏的存在函数是由编译器直接编译的实体,调用行为由编译器决定多次使用宏会导致最终可执行程序的...
    99+
    2022-11-13
  • c语言宏定义用法规则是什么
    C语言宏定义的用法规则如下:1. 宏定义的格式为:#define 宏名 替换文本。2. 宏名必须是一个有效的C标识符,并且不可以是C...
    99+
    2023-10-11
    c语言
  • C语言深入讲解宏的定义与使用方法
    目录一、C语言中的宏定义二、宏定义表达式三、宏表达式与函数的对比四、有趣的问题五、强大的内置宏六、小结一、C语言中的宏定义 #define是预处理器处理的单元实体之一#define ...
    99+
    2022-11-13
  • C语言宏定义使用要注意哪些事项
    在使用C语言宏定义时,需要注意以下事项:1. 保持宏定义的简洁和清晰:宏定义应该尽可能简洁明了,避免过长或复杂的宏定义,以提高代码的...
    99+
    2023-10-11
    C语言
  • C语言入门篇--定义宏#define的概述
    目录1.什么是宏2.为什么要有宏?3.宏的用法3.1定义宏3.2宏常量3.3“宏函数”1.什么是宏 宏只做简单的文本替换,但一般在作为变量名出现或者在字符串中出现中是不会被替...
    99+
    2022-11-12
  • C语言未定义行为分析
    这篇文章主要介绍“C语言未定义行为分析”,在日常操作中,相信很多人在C语言未定义行为分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言未定义行为分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!他在...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作