linux
灵哎惹,凌沃敏
“任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员。”
展开
-
git学习记录/菜鸟教程(基于Gitcode)
本文章记录了从零开始使用git的操作原创 2023-02-28 15:53:20 · 681 阅读 · 0 评论 -
关于强制转换数据类型后再存储或发送是否会影响数据字节顺序不一致问题
强制类型转换与数据大小端问题原创 2022-12-07 17:59:33 · 235 阅读 · 0 评论 -
GCC编译输出中text,data,bss和dec的含义
bss是不会算入最终生成的bin文件里面的,因为对于未初始化的变量,只需要在内存中开辟个相应大小的空间就行了。2.data:已初始化的全局/静态变量,相当于MDK的rw_data。3.bss:未初始化的全局/静态变量,相当于MDK的ZI_DATA。1.text:代码和常量,相当于MDK的code+ro_data。4.dec:上述3者的算术和。原创 2022-09-08 22:37:49 · 2612 阅读 · 0 评论 -
Linux系统主要目录的功用
/var 某些大文件的溢出区,比方说各种服务的日志文件 /lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里 /proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息 /mnt 系统提供这个目录是让用户临时挂载其他的文件系统 /root 系统管理员的主目录(呵呵,特权阶级) /tmp 公用的临时文件存储点 /sbin 系统管理命令,这里存放的是系统管理员原创 2022-01-10 14:55:24 · 67 阅读 · 0 评论 -
文件系统类型总结/简介
ext2 早期linux中常用的文件系统 ext3 ext2的升级版,带日志功能 RAMFS 内存文件系统,速度很快 NFS 网络文件系统,由SUN发明,主要用于远程文件共享 MS-DOS MS-DOS文件系统 VFAT Windows 95/98 操作系统采用的文件系统 FAT Windows XP 操作系统采用的文件系统 NTFS Windows NT/XP 操作系统采用的文件系统 HPFS OS/2 操作系统采用的文原创 2022-01-10 14:23:49 · 282 阅读 · 0 评论 -
关于C/C++宏定义/预编译
1.宏定义在函数内部和外部是一样的(都视为在外部),所以一般不把宏定义放在函数内部以免造成误导;如果一个函数里面只有宏定义 那么该函数相当于不存在。2.在一个文件或者多个文件中重复定义一个标志编译不会报错,有的编译器会出警告。3.预编译时对宏定义的处理就是简单的替换,如果说涉及标志重定义的,那么替换时就以最新宏定义为准,关于这点下面作详细说明:假设现在有a.c,a.h,b.c,b.h四个文件:1.先在a.h中定义testdef为20,再在b.h中定义testdef为30,然后在a.c中先包含原创 2022-01-07 18:14:07 · 1272 阅读 · 0 评论 -
关于C与C++区别的摘录
1.博主:恒虚之境作者:恒虚之境链接:https://www.zhihu.com/question/28834538/answer/477487776来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。大家都知道,上古时代,猿猴用机器代码写程序,而且好像还是01二进制编码的表现方式。这些01代码精确表达了计算机CPU所要做的每一个动作(每一条指令)从内存的某个地址中读数到寄存器中,寄存器中又再做那些事情,动作完了之后,又将运算结果送回内存,程序计数器跳转到那个位置.转载 2021-12-23 18:11:12 · 132 阅读 · 0 评论 -
记录:程序跳转前一定要先禁止所有中断
之前在做程序更新时,有发现程序跳转后莫名出现执行异常或卡死问题,后面百般调试发现如果跳转前禁止所有中断的话就好了,但是不知道具体为什么; 今天看到个大神写的文章才知道,原来是在程序跳转后,并且在新程序的__main函数执行之后(该函数负责初始化新程序的内存)并在新程序的SCB->VTOR执行之前刚好发生中断了,而中断中用到的变量的地址刚好和新程序的内存使用空间重合,这样就导致新程序的内存被篡改,导致程序运行不正常或卡死。...原创 2021-12-23 10:30:28 · 333 阅读 · 0 评论 -
从函数指针到回调函数
函数指针:指向函数的指针,某个函数指针表示指向某一类型函数的指针。我们知道,指针类型有整型、浮点型、字符型等,现在又加了一种类型:函数型;浮点型指针就叫浮点指针,那么函数型指针就叫函数指针;我们既然可以把浮点指针当做函数的传递参数,那么自然也可以把函数指针当做函数的传参,函数A在其传参中带有函数指针类型一般是为回调函数做准备的,在调用函数A时被传递进去的函数(如B)我们一般称之为回调函数。那么为什么函数A要带有一个函数指针类型,弄得这么复杂呢,那是因为写函数A的人(如写系统的人)不确定其他人原创 2021-12-09 22:02:35 · 156 阅读 · 0 评论 -
总结:Unicode、GBK、UTF-8之间的区别
Unicode:所有字符都是两个字节,对于英文字符,高字节为0,低字节与ASCII码相同GBK:中文字符为两个字节;英文字符为1个字节,且与ASCII码相同。原创 2021-06-05 15:06:15 · 4077 阅读 · 0 评论 -
C/C++ 在宏定义字符串中引用宏定义
需求:现有字符串A,B,C都包含字符串D,如:#define stra "123/456/789"#define strb "111/222/789"#define strc "333/444/789"#define strd "789"以上是对这种情况的最简单粗暴的实现方式,这种方式的缺点就是每次strd改变的时候(如从"789"变成"abc")就需要替换所有的"789",那么有没有其他方式可以不用重复写"789"呢:方式1:#define stra原创 2021-04-06 16:32:20 · 2668 阅读 · 0 评论 -
关于cJSON_Delete导致程序各处free都失败的原因
原因:如果程序中有删除父级的cJSON,则不用在删除父级的cJSON之前删除子级的cJSON了,否则会导致内存分配紊乱(大量free的入口地址找不到),从而导致后续所有的free都失败。 比如,json2是json1的子级,则如果有删除json1的代码就不用了再删除json2了,否则内存紊乱。...原创 2021-03-31 18:51:51 · 2482 阅读 · 2 评论 -
记录:从一个函数里向另一个函数传递参数要用指针变量,不能用局部非指针变量
如题,从A函数中调用B函数向C函数传递参数,传递完A函数会结束时不能用局部非指针变量,因为局部非指针变量在函数结束后会被回收的,这回导致传递过去的参数为空;但是局部指针变量是malloc在堆区的,要主动free才会消失; 所以,此时要注意的是,在C函数中用完该指针变量后要记得free掉,否则造成内存泄漏!...原创 2021-03-26 10:40:58 · 236 阅读 · 0 评论 -
关于XR872编译出现问题“gcc-arm-none-eabi-4_9-2015q2/bin/arm-none-eabi-gcc: 无法执行二进制文件”
怀疑是gcc编译器问题或者版本问题,正好在网上找到个“q3”版本的,于是换了下,问题解决, 有需要请邮件:X_Q_Wei@163.com原创 2020-12-09 14:34:23 · 689 阅读 · 0 评论