Git基础篇(二十三)——amend指令
Git基础篇(二十三)——amend指令前言: amend指令是常用指令,用于对最近一次提交记录进行修改,但指令的使用应该小心,本篇文章详细介绍amend的用法。 1 amend指令介绍 该指令用于对最近一次 commit 记录进行再次修改提交,不会生成新的提交记录,但会更新git的Commit ID。原提交记录可通过 git reflog 查看。 什么情况下应该应该对最近一次提交记录进行修改?比如忘记添加或多添加了一些文件,对文件内容需要重新修改,或者是对提交的log进行修改,此时应该重新提交。 2 amend修改分支最新提交2.1 修改文件、目录或log 若需要重新修改文件,则先在本地工作区直接修改,然后执行 git add --all 将修改添加到暂存区,若不需要修改文件则无需执行此步骤。 执行指令 git commit --amend 进行重新提交,输入指令后会跳转到log输入界面并显示最新log描述,若需修改log描述则直接进行修改,最后输入 :wq...
c进阶篇(十一)——变量初始化详解
c进阶篇(十一)——变量初始化详解前言: 定义变量时对数据类型进行初始化是十分有必要的,但变量的初始化也许还有你不知道的细节,本篇文章带你深入探讨。 1 静态、局部和全局变量初始化 我们把变量按照作用域和生存期进行分类,可以分为静态变量、局部变量、全局变量三类。定义变量时从语法上将可以对变量初始值进行初始化,也可以选择不初始化,以下进行未初始化时初值探究。 1.1 未初始化时的初值 未初始化时,由于全局变量和静态变量由编译器自动初始化为0(仍然建议代码上写明初始值赋值0),而局部变量存储在栈空间里,未初始化时初值是不确定的。这里以byte类型(uint8_t)举例,其他数据类型也一样(指整形、浮点型、字符型、指针型、数组、结构体、联合体、枚举)。 12345678910111213141516byte g_byTmp; //全局变量。byte Fun(void){ static byte s_byTmp; //静态变量。 byte byTmp; //局部变量。 ...
c进阶篇(十)——weak用法详解
c进阶篇(十)——weak用法详解前言: weak用于修饰弱函数或变量,以实现类似c++语言中函数重载的功能,本篇文章详细探讨weak的运用。 1 什么是weak函数 weak 不是c语言的关键字,而是一些编译器的扩展属性,MDK-ARM中在函数定义和声明前加 __attribute__((weak)) 表示将该函数定义为弱函数,而在变量定义或声明前加 __attribute__((weak))...
c进阶篇(九)——inline函数用法详解
c进阶篇(九)——inline函数用法详解前言: 内敛函数可有效降低调用函数的资源开销,堆栈开销和时间开销都能得到降低,但会增加Flash的消耗。本篇文章详细讲解内敛函数在c语言中的运用。 1 什么是内敛函数 在c/c++中,为了消除一些小函数(处理任务少,运算时间较短的函数),特别是一些调用频次很高的函数调用时带来的大量堆栈空间和进退栈时间的消耗,特别的引入 inline 修饰符在函数定义时放置在返回值关键字之前,请求编译器将其作为内敛函数处理,它对编译器只是提出一种建议,编译器将最终决定是否将其作为内敛函数或普通函数。被作为内敛的函数,编译器在调用处直接将其展开,嵌入到调用处,这样就省去了参数传递、对栈的操作和释放,从而节省了栈和时间开销。由于在每个调用处都会展开和嵌入内敛函数的代码,因此掉调用的地方越多Flash开销越大,对于多处调用的函数作为内敛将会快速消耗Flash空间,这一点与宏函数有些类似。 inline 是c99标准时加入的关键字。 2 内敛函数和宏函数的区别2.1...
c进阶篇(八)——回调函数用法详解
c进阶篇(八)——回调函数用法详解前言: 我们都知道变量可以通过指针的方式访问,那么函数其实也可以。本篇文章将详细介绍c语言中回调函数的用法。 1 什么是回调函数 网上对回调的解释有好几套说法,但是都没有很好的体现出回调和非回调函数的差异特点。比较好的是百度百科的说法,c语言回调函数用函数指针实现,是一种被作为参数传递的函数。为甚普通函数也可以被调用还要用回调函数呢。回调函数可以使得调用者不必关系谁是被调用者,它只需要知道存在一个符合特定函数原型和限制条件的被调函数即可。也就是说回调函数可以“解耦合”。回调函数还能实现接口不变的情况下不同功能切换。 2 定义回调函数 回调函数的本质是函数指针,即指向函数的指针,我们知道变量是有类型的,而函数是有返回值和形参的。以下示范定义一个名为 CallBack 的回调函数,返回值类型为 byte ,形参1为 byte ,形参2为 byte 。 1234//定义回调函数CallBack,返回值:byte,参数1:byte型,参数2:byte型。byte...
Vim基础篇(二十七)——日历插件calendar
Vim基础篇(二十七)——日历插件calendar前言: 谷歌日历是我目前用过最好用的日历软件,它可以详细记录日常行程。Calendar是将谷歌日历与Vim结合的一款优秀插件。 1 安装Calendar 通过vim-plug插件管理器安装 itchyny/calendar.vim ,在Vim中执行以下指令进行安装。 1:PlugInstall 2 用法 输入以下指令打开日历插件。 1:Calendar 打开日历并跳转到指定年份,该日期格式需配置 let g:calendar_date_endian = "big" 。 1:Calendar <year> <month> <day> 以年视图打开日历。 1:Calendar -view=year 以月视图(默认)打开日历。 1:Calendar...
Git查看冲突
Git查看冲突前言: Git进行分支合并时,合并的分支若都对同一个文件进行了修改,则会出现合并冲突,有时有多份文件同时发生冲突,本篇文章介绍查看哪些文件冲突的方法。 1 查看冲突文件 当合并分支后,被合并的不同分支若对相同的文件进行修改则会产生冲突。可能同时有多份文件发生冲突,若想要查看有哪些文件冲突可使用以下指令。 1git status 冲突文件会列出在 Unmerged paths 下面。
Git重命名文件大小写
Git重命名文件大小写前言: 本篇文章介绍在Git中重命名文件。 1 Git中修改文件名遇到的问题 Git默认是大小写不敏感的,如果将文件名的大小写进行修改则Git将无法识别此变更。 工程中有文件 main.c ,将其文件名修改为 MAIN.c ,输入 git status 指令查看文件变更状态,git并未发现文件名发生变更。 2 方法一:改为大小写敏感 Git默认是大小写不铭感的,可通过以下指令将其修改为大小写铭感。 1git config core.ignorecase false 大小写敏感后再使用 git status 即可显示被修改大小写的文件名。 对当前分支提交修改大小写文件名的文件,但存在一个问题,仅当前分支的文件被修改文件名,当切换到其他分支后会再次提示文件名被修改,此方法Git不能通过对大小写敏感来关联出哪个文件被改名。 3 方法二:两次add &esmp;先将要修改名的文件名改为其他任意名称,然后执行 git...
c进阶篇(七)——register用法详解
c进阶篇(七)——register用法详解前言: register是c的关键字,但目前已经鲜少人使用它了。 1 register介绍 &emps; register 被用于修饰函数局部变量和形参,因此register变量属于动态存储。通常的变量被存储在RAM中,访问RAM中的变量需要CPU对内存寻址访问,而register变量被存储在CPU内部的寄存器中提高了变量的访问速度,但CPU的寄存器数量是有限的(定义太多将会超出容量),因此应尽量减少register的使用。因为具有更高的访问效率及资源的稀缺性,应当优先将频繁读写的变量定义为register变量,比如c循环中频繁访问的变量,如用于循环计数的变量。register只是一个”建议“性的关键字,被register修饰的变量并不一定会被编译器存储在CPU内部寄存器中,只是对编译器优化的一个”建议“,最终如何存储取决于编译器。当今编译器的功能已经十分强大,它能够自动帮你完成这些优化,因此现在很少有人使用register关键字了。被register修饰的变量不能被 &...
STLink驱动安装与升级固件
STLink驱动安装与升级固件前言: 嵌入式软件开发中,经常要对单片机进行烧录动作,烧录的设备通常有芯片厂自己设计的烧录板、JLink、STLink。本篇文章告诉你STLink的USB驱动安装和固件升级。 1 STLink简介 ST-Link是ST推出的用于对单片机进行在线调试和编程的工具。其一般具有SWIM、JTAG、SWD等通讯接口。目前有V1、V2、V3三大版本,市面上横行的盗版主要是V2标准版。 2 STLink USB驱动安装 先到ST官网 下载STLink的最新USB驱动 ,下载完成后会得到一个压缩包,该压缩包提供了32位和64位两种版本安装。解压压缩包,选64位则双击运行 dpinst_amd64.exe ,选32位则双击运行 dpinst_x86.exe 。安装只需一路点击 下一步 即可。 3...










