2024-01-05 C语言定义的函数名里面插入宏定义,对函数名进行封装,可以通过宏定义批量修改整个文件的函数名里面的内容

一、C语言定义的函数名里面插入宏定义,对函数名进行封装,可以通过宏定义批量修改整个文件的函数名里面的内容。使用下面的代码对函数进行封装,这样移植的时候可以根据包名和类名进行批量修改,不用一个函数一个函数的修改。。

#define PACKAGE_NAME com_xxx_xxx
#define CLASS_NAME   xxxx
#define FUNCTION_STYLE_INNER(packagename, classname ,functionanme) Java_##packagename##_##classname##_##functionanme
#define FUNCTION_STYLE(packagename, classname ,functionanme)  FUNCTION_STYLE_INNER(packagename, classname ,functionanme)
#define JNI_FUNCTION(functionanme) FUNCTION_STYLE(PACKAGE_NAME,CLASS_NAME,functionanme)

二、需要注意的知识点:

        在C语言中,## 运算符在宏定义中用于连接两个令牌。然而,当使用宏参数与 ## 运算符一起使用时,并且这些参数本身是宏时,直接使用 ## 运算符将不会导致参数宏的展开。这是因为宏的展开顺序规则导致 ## 阻止了参数宏先于连接操作的展开。

为了解决这个问题,通常需要使用两层宏:一层用于参数宏的展开,另一层用于连接操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/414555.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Bluetooth Framework源码剖析(二)它们都重要

在具体讲述每个模块前我们先来看看一些公共的知识点,如Binder、JNI、Service、AIDL、Broadcast等,它们都是Android/Java基础的知识点,在网络上有许多相关的文章,本文就不深入的讲述它们,但在Bluetooth Framework或者ap…

2023 年顶级前端工具

谁不喜欢一个好的前端工具?在本综述中,您将找到去年流行的有用的前端工具,它们将帮助您加快开发工作流程。让我们深入了解一下! 在过去的 12 个月里,我在我的时事通讯 Web Tools Weekly 中分享了数百种工具。我为前端…

json-server的基础使用

json-server 是什么? 用来快速搭建模拟的 REST API 的工具包 可以30秒内快速为我们搭建一个假的基于 REST API的服务 我们要如何使用呢? 1.先安装 //全局安装 npm i -g json-server 2.创建文件 db.json 我们需要在db.json放入一点内容 放入示例: {/…

门禁监控如何提升安全系数?这个技术,学习一下!

随着社会的不断发展和科技的快速进步,安全管理成为各个领域至关重要的议题。在这一背景下,门禁监控系统逐渐崭露头角,成为保障建筑物和场所安全的关键工具。 门禁监控系统不仅在提高安全性方面发挥着积极作用,而且通过智能化的技术…

【备战蓝桥杯】图论重点 敲黑板啦!

蓝桥杯备赛 | 洛谷做题打卡day11 文章目录 蓝桥杯备赛 | 洛谷做题打卡day11杂务题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 题解代码我的一些话 杂务 题目描述 John 的农场在给奶牛挤奶前有很多杂务要完成,每一项杂务都需要一定的时间来完成它。比如&a…

前端学习路线图和一些经验

关于前端目前个人建议的一个路线,也是自己之前前端学习时候的一个大致路线,给想要学习前端的小白一个参考,以前自己刚开始接触前端的时候就是不知道该按照什么路线学习 eg-前端是做什么的? 就是开发网站,移动端,小程序之类的页面 调调接口完成页面的渲…

老飞飞限制多开解决办法2024

办法1 当有些客户端只能开4个。那么开4个后。会提示禁止多开什么的。解决办法1 ECHO OFF color 0A ECHO ---------------------------------------------------------------------------- ECHO. ECHO 版权所有 copyright of ECHO. ECHO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…

Flask 与 小程序 加入购物车功能

mina/pages/food/info.wxml <!--购买和收藏弹窗--><view class"show-popup" hidden"{{hideShopPopup}}" ><view class"popup-mask" bindtap"closePopupTap"></view><view class"popup-contents"…

【并发编程】同步模式之保护性暂停

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程 ⛺️稳中求进&#xff0c;晒太阳 同步模式之保护性暂停 这个模式用到的基础就是wait-notify 详情可以看这篇文章》:【并发编程】wait/notify 即Guarded Suspension,用在一个线…

leetcode:1736. 替换隐藏数字得到的最晚时间(python3解法)

难度&#xff1a;简单 给你一个字符串 time &#xff0c;格式为 hh:mm&#xff08;小时&#xff1a;分钟&#xff09;&#xff0c;其中某几位数字被隐藏&#xff08;用 ? 表示&#xff09;。 有效的时间为 00:00 到 23:59 之间的所有时间&#xff0c;包括 00:00 和 23:59 。 …

DSX-5000线缆认证测试仪-之原厂校准

众所周知&#xff0c;DTX-1800校准是校准本身的设备精度&#xff0c;还原原厂精度事宜。 135 375 00200 但是DSX-5000或者DSX-8000校准的不是平台本身&#xff0c;而是测试模块。也就是后面备注了型号的模块。所以每次告诉客户&#xff0c;不用把全部设备发过来&#xff…

【vue】ant-col多列栅格式的表单排列方式布局异常:

文章目录 一、效果&#xff1a;二、解决&#xff1a;三、问题&#xff1a; 一、效果&#xff1a; 二、解决&#xff1a; 在row中添加布局类型&#xff1a;type“flex” 三、问题&#xff1a; 后期正式环境还是存在该问题 >>>.ant-form-item {max-height: 32px; }多…