switch字符串
C语言switch并不支持字符串,但对于长度小于等于4个的短字符串,单引号可以将其转为int类型,如int a = 'abcd';是合理的,其在内存中的是连续存储的4个字节,可以转换为int。
对于长度大于4的字符串,单引号只能将最后4个字符转为int,应该与机器的位数和大小端模式有关。
因此,对于长度小于4的字符串,使用switch的方式为
12345678910111213141516171819202122232425int to_int(char *str){ int res = 0; for (int i = 0; i < strlen(s ...
npm_yarn更新镜像
作为一个备份。
一、Yarn 设置淘宝镜像1.查询当前配置的镜像
1yarn config get registry // 默认:https://registry.yarnpkg.com
2.设置成淘宝镜像
1yarn config set registry http://registry.npm.taobao.org/
3.换成原来的
1yarn config set registry http://registry.npmjs.org/
二、NPM设置淘宝镜像1.查询当前配置的镜像
1npm get registry
2.设置成淘宝镜像
1npm config set registry ...
cJSON使用事项
内存管理可以修改内存管理函数,自己实现malloc,realloc和free,详细参考:自定义malloc分配数组空间。
内存释放使用cJSON_free释放cJSON_Print,cJSON_PrintUnformatted和cJSON_PrintBuffered申请的字符串空间。
使用cJSON_Delete释放生成的JSON对象。
控制浮点数小数位数没有找到cJSON本身的接口,但可以自己创建函数实现。
1234567void cJSON_AddDoubleToObject(cJSON *const object, const char* const name, const double ...
自定义malloc分配数组空间
申请栈空间,实现initMallocPoll、mAlloc、mRealloc、mFree动态分配。
使用blk结构体记录空间分配,返回申请空间的地址在紧跟在blk后,链表记录已分配或未分配的块,申请或释放时,改变链表指针的指向,合并相邻未分配块。
本篇文章参考自 https://blog.csdn.net/wxx258369/article/details/78949687,仅仅对其中的一部分做了修改
代码mAlloc.h
12345678910111213#ifndef __mAlloc_h__#define __mAlloc_h__void initMallocPool(void *p ...
C宏可变参数扩展
问题写代码时,遇到需要定义一个字符串数组和一个函数指针数组,字符串数组的值和函数指针名称一一对应。按照一般初始化方式,需要重复输入很多内容,并且因为字符串数组和函数指针数组可能会有增减,因此一般方式就很繁琐,想着用宏定义是否可解决。
问题示例:
123456789101112131415161718//函数typedef void (*FUNC)(void);void func_a(){}void func_b(){}void func_c(){}//需要定义字符串数组char* strList[3] = {"my ...
移远EC800MQTT与GNSS应用
一切以移远应用指导手册为准。
名词解释
GPRS:General Packet Radio service,通用分组无线业务。
是一种基于GSM系统的无线分组交换技术,提供端到端的、广域的无线IP连接。相对原来GSM的拨号方式的电路交换数据传送方式,GPRS是分组交换技术,具有“实时在线”“按量计费”“快捷登录”“高速传输”“自如切换”的优点。通俗地讲,GPRS是一项高速数据处理的技术,方法是以“分组”的形式传送资料到用户手上。GPRS是GSM网络向第三代移动通信系统过渡的一项2.5代通信技术,在许多方面都具有显著的优势。
PDN:Public Data Network,公用数据网。
...
关于爱情的认识
一个很久很久未付出亦未感受过爱情的人,谈谈对于爱情是什么的认识
最后的感想坚持没有对错,只有适不适合。热情似火的人确实难以相容于沉默如水。而没有回音的坚持,终究是自作多情,该画上终止符。
一个月不算短,一年的十二分之一,聊天是快乐的。
关于坚持有些坚持的事要有意义,坚持本身才有意义。就像锻炼,如果不能激发机能,最终不能提升体能,那坚持就失去了目标,没有任何价值。
有些坚持的事需要对方赋予意义,坚持才有意义。就像交往,如果每天的问候不能让人快乐,就不是感情的创造而是消耗,坚持就进退两难。
为什么说进退两难呢?
后退意味着放弃,是否定了此前的坚持,也打消了之后的信念。
继续意味着消耗,是让激情 ...
vim跳转
内容主要来源于以下两个博客:
vim几种跳转方式
vim技巧:vim标记(Mark)
文件内跳转
普通模式下左h,右l,上k,下j。(可以使用数字+hlkj,实现跳跃式移动)。
字符间跳转
跳转到当前字符的前面:普通模式下i。
跳转到当前字符的后面:不同模式下a。
字符串间跳转
向右跳:普通模式下跳转到串首w,普通模式下跳转到串尾e。
向左跳:普通模式下跳转到串首b,普通模式下跳转到串尾be(这个似乎没有专门的指令)。
高亮文件内的某字符串所有出现处,并在高亮处跳转:先将光标移动值至目标字符串处按*。
高亮匹配结果中往下跳:n。
高亮匹配结果中往上跳:N。关闭高亮:noh ...
MXD2660B休眠唤醒
经过一段时间的摸索后,终于大致搞清楚MXD2660B的休眠唤醒流程,做一下总结。
首先还是看手册。
芯片有多种功耗模式:active、idle、sleep、shutdown,我主要关注idle、sleep模式之间的切换。
需要注意的点:
蓝牙广播会唤醒MCU,唤醒后会立刻进入休眠。如果有IO中断,在蓝牙唤醒时会触发中断;
IO唤醒,如果唤醒IO的脚配置了中断,MCU唤醒后会进入中断;
如果MCU休眠时开启了广播,在广播时会有一定功耗,使用电流表测量会发现电流定期跳增,即是在广播。
从idle到sleep状态转移前,会询问app层是否进入睡眠,即调用save_info_before_slee ...
Linux内核移植
内核移植思维导图