写自己的c库----小话c语言(19)

ops/2024/9/19 18:46:06/ 标签: 开发语言, 软件开发, c语言, c++

Q: 对于c代码,经常可能被c++代码使用,所以经常需要使用extern "C"语句,老是写这段代码真是很烦人,有什么好的方法?

A: 对于重复代码来说,宏无疑是个很好的方法。

#if defined(__cplusplus)
#define	EXTERN_C_BEGIN	    extern "C" {
#define	EXTERN_C_END	                    }
#else
#define	EXTERN_C_BEGIN
#define	EXTERN_C_END
#endif

Q: 对于不同平台,int默认占用的字节可能不同,如何解决这样这样的移植问题?

A: typedef很好地解决这样的问题。比如,有两个平台,分别是iphone和MTK, 假设因为空间问题,对于基本类型,希望在iphone上使用8个字节,MTK使用2个字节。

形如如下代码:

#define MTK
#undef  IPHONE#if     defined(IPHONE)
typedef long    int INT;
#elif   defined(MTK)
typedef short   int INT;
#endifextern INT process_id;

Q: 对于assert,如何编写?

A: 简单的思路就是显示崩溃文件和行数,然后结束应用程序。

#define assert(a)   \(!(a) ? 0 : (printf("assert:file:%s line:%d", __FILE__, __LINE__), abort()))


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!


http://www.ppmy.cn/ops/33843.html

相关文章

Agent AI智能体,塑造智能新纪元

Agent AI智能体,即AI Agent,是指人工智能代理,是一种能够感知环境、进行决策和执行动作的智能实体。它具备通过独立思考、调用工具逐步完成给定目标的能力。与大模型不同,AI Agent的工作仅需给定一个目标,它就能够针对…

《Fundamentals of Power Electronics》——基础交流建模方法

PWM整流器小信号交流模型建模的主要步骤为: (a)利用小纹波近似的动态版本,建立与电感和电容波形的低频平均值有关的方程; (b)平均方程的扰动和线性化; (c)交流等效电路模型的建立。 以下图buck-boost电路为例进行分析。 首先测…

FlinkSQL 中lateral table

在 Flink SQL 中,LATERAL TABLE 是一种用于处理依赖于外部表达式的表值函数(Table-valued Function,简称 TVF)的语法。LATERAL TABLE 用于在查询中扩展表,并将表值函数的结果与查询的其余部分进行连接(LATE…

设计模式-概述

设计模式概述 1. 软件设计模式的产生背景2. 软件设计模式的概念3. 设计模式分类4. 软件设计原则4.1 开闭原则4.2 里氏代换原则4.3 依赖倒转原则4.4 接口隔离原则4.5 迪米特法则4.6合成复用原则 1. 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中&…

【程序员英语】常用介词用法区分to、for、of、with、as、on、at、in

文章目录 常用介词用法区分1. To用法:- 表示方向或目的地:go to the school- 表示目的:study to improve- 与某些动词连用:talk to him 示例:- 他去学校了。He went **to** the school.- 为了提高成绩,她努…

利用Github发现优质的学习项目网址

1. 直接搜索,star的数量越多的项目质量越高 2.Github Trending 地址: https://github.com/trending 3. Gitstar Ranking 地址: https://gistar-ranking.com/ 4. Awesome Topic 地址: https://github.com/topics/awesome

MySQL 高级 - 第一章 | 字符集、大小写规范与sql_mode的合理设置

目录 前言一、字符集1.1 数据库中的默认字符集1.2 各级别的字符集1.3 字符集与比较规则1.4 字符集设置1.5 已有库表字符集变更1.6 请求到响应过程中字符集的变化 二、大小写规范2.1 Windows 和 Linux 平台区别2.2 Linux 下大小写规则设置2.3 SQL 编写建议 三、sql_mode 的合理设…

github.com/gin-contrib/timeout应前置使用

首先,gin的中间件是有执行顺序的,就是按照添加的顺序进行的。之前没在意,我把timeout中间件放在了最后面,导致业务一直不正常,后面debug源码总算看明白了: 源码入口: func(c *gin.Context) {fi…

从一到无穷大 #26 Velox:Meta用cpp实现的大一统模块化执行引擎

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言业务案例PrestoSparkXStreamDistributed messaging systemData IngestionData Pr…

【动态规划】斐波那契数列模型

1.第N个泰波那契数 第N个泰波那契数 思路: 简单的线性动态规划 1.确定状态表示 经验 题目要求 本题为,以i位置为结尾,这个位置的泰波那契数是多少 2.写出状态转移方程 dp[i] dp[i - 1] dp[i - 2] dp[i - 3] 3.细节问题 a.初始化 b…

计算机网络——TCP与UDP

TCP/UDP详解 1. TCP主要特点TCP流量控制TCP效率问题拥塞控制拥塞控制算法 TCP连接和断开 2. UDP特点: 1. TCP主要特点 1.面向连接 一对一、可靠、全双工通讯 2.面向字节流 TCP根据对⽅的接收能⼒和⽹络拥塞情况将字节流分成⼤⼩不同的段发送给接收缓存。 3.TCP的连…

Unity UGUI Image 点击事件忽略空白像素区域

我们会遇到图片不是方形的不规则图片。这个时候我们希望只有点击到图像内容本身才算点击,点击空白区域则不算点击。而UGUI对图片的处理是整个图片都会算作点击区域,这样不能满足于我们的使用需求了。 首先我们需要把图片本身的Read/Write 选项打开 然后…

USB HID报告描述符学习

参考资料 HID 报告描述符 (qq.com)https://mp.weixin.qq.com/s?__bizMzU1ODI3MzQ1MA&mid2247485748&idx1&sn112bd8014eb96b03308b3b808549e8d4&chksmfc284ff1cb5fc6e770c2d2ece46c17bf2529901b45a357938978fa62163723556ad497b05c47&cur_album_id3340417…

Vue.js(过渡)

1.过渡 Vue 在插入、更新或者移除 DOM 时&#xff0c;提供多种不同方式的应用过渡效果。 Vue 提供了内置的过渡封装组件&#xff0c;该组件用于包裹要实现过渡效果的组件。 语法格式 <transition name "nameoftransition"><div></div> </tr…

【工程记录】Python爬虫入门记录(Requests BeautifulSoup)

目录 写在前面1. 环境配置2. 获取网页数据3. 解析网页数据4. 提取所需数据4.1 简单提取4.2 多级索引提取 5. 常见问题 写在前面 仅作个人学习与记录用。主要整理使用Requests和BeautifulSoup库的简单爬虫方法。在进行数据爬取时&#xff0c;请确保遵守相关法律法规和网站的服务…

【实验】根据docker部署nginx并且实现https

环境准备 systemctl stop firewalld setenforce 0 安装docker #安装依赖包 yum -y install yum-utils device-mapper-persistent-data lvm2 #设置阿里云镜像 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #安装最新版…

Redis主从复制

什么是主从复制 顾名思义,主从复制就是将一台机器的redis服务器设置为master,另一台机器的redis服务器设置为slave,将master的数据异步同步到所有的slave上 作为master的主机可读可写,而作为slave的从机只能读取数据不可修改数据 如何配置主从复制 配置主从复制只需要在配置文…

C语言--带环链表问题

继续学习 一、判断链表是否带环 141. 环形链表 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;用快慢指针&#xff0c;快指针走两步&#xff0c;慢指针走一步&#xff0c;当慢指针走一半快指针进到环里 当慢指针进环&#xff0c;快指针已经在环中转了一会儿了 | |…

Terraform配置语法

Terraform的理念是IaC&#xff0c;所以把基于HCL语言编写的Terraform配置信息也叫做Terraform代码。 Terraform代码同时支持HCL和JSON两种格式&#xff0c;详见Syntax&#xff0c;但本文讲解的语法是基于HCL而言的。 如下内容是构成Terraform代码的基本要素。 参数 如下代码…

JavaWeb请求响应概述

目录 一、请求响应流程-简述 二、深入探究 三、DispatcherServlet 四、请求响应流程-详细分析 一、请求响应流程-简述 web应用部署在tomcat服务器中&#xff0c;前端与后端通过http协议进行数据的请求和响应。前端通过http协议向后端发送数据请求&#xff0c;就可以访问到部…