码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 嵌入式C 语言函数宏封装妙招


    1. 函数宏介绍

    函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销。

    函数宏本质上为宏,可以直接进行定义,例如:

    1. #define INT_SWAP(a,b) \
    2.     int tmp = a;    \
    3.     a = b;          \
    4.     b = tmp

    但上述的宏具有一个明显的缺点:当遇到 if、while 等语句且不使用花括号仅调用宏时,实际作用范围在宏的第一个分号后便结束。即 a = b 和 b = tmp 均不受控制语句所作用。

    因此,在工程中,一般使用三种方式来对函数宏进行封装,分别为 {}、do{...}while(0) 和 ({})。下文将一一对三种方式进行分析,比较各自的优劣点。

    2. {} 方式

    INT_SWAP 宏使用 {} 封装后形态如下:

    1. #define INT_SWAP(a,b)\
    2. {                   \
    3.     int tmp = a;    \
    4.     a = b;          \
    5.     b = tmp;        \
    6. }

    此时,直接调用与在无花括号的控制语句࿰

  • 相关阅读:
    乾元通聚合路由器实现多5G转WIFI6信号覆盖
    图像配准算法之demons算法
    java导出数据到excel表中
    【JavaScript复习六】内置对象string定位类获取方法
    某黑产组织最新攻击样本利用BYVOD技术的详细分析
    携手并进 | 云畅科技与华商智造院签署战略合作协议
    大模型重塑区域人才培养,飞桨(重庆)人工智能教育创新中心正式启动
    8086汇编笔记
    设计模式-享元设计模式
    【ROS进阶篇】第十讲 基于Gazebo的URDF集成仿真流程及实例
  • 原文地址:https://blog.csdn.net/weixin_41114301/article/details/133523029
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号