基础知识
平时积累的一些基础概念和基础知识
Yumin_Wu
知行合一,守正出奇
展开
-
关于inline(内联)
在c中,为了解决一些频繁调用的小函数大量消耗栈空间或是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。栈空间就是指放置程式的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足所造成的程式出错的问题,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。(一)inline函数(摘自C++ Primer的第三版)转载 2017-12-08 12:27:31 · 474 阅读 · 0 评论 -
线程同步(互斥锁与信号量的作用与区别)
“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的”也就是说,信转载 2017-12-04 18:36:16 · 421 阅读 · 0 评论 -
Linux下的lds链接脚本基础
一、 概论每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情.连接器有个默认的内置连接脚本, 可用ld –verbose查看. 连接选项-r和-N可以影响默认的连接脚本(如何影响?).-转载 2017-10-15 15:32:11 · 709 阅读 · 0 评论 -
浅谈JTAG接口
在嵌入式Linux的学习过程当中,我们经常使用JTAG接口来连接PC机与开发板,以实现程序的烧写与调试。本文简要介绍JTAG协议的定义、发展过程、功能以及常见的引脚信号排列。原创 2017-09-07 10:59:37 · 11386 阅读 · 0 评论 -
闪存中的NorFlash、NandFlash及eMMC三者的区别
快闪存储器(英语:Flash Memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。本文简要介绍闪存中的NorFlash、NandFlash及eMMC三者的区别。转载 2017-09-04 22:23:40 · 3236 阅读 · 0 评论 -
Linux内核中的atoi和itoa
对于atoi()用simple_strtol() ,simple_strtoul()等函数替代;对于itoa(),用snprintf()。参考:http://blog.chinaunix.net/uid-26377382-id-4849927.html转载 2019-08-19 16:31:31 · 525 阅读 · 0 评论 -
Makefile 中:= ?= += =的区别
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE ?= “Hello World! First!”endififeq (...转载 2019-03-06 09:59:26 · 287 阅读 · 0 评论 -
Linux时间编程之strftime():格式化输出好帮手
刚工作那时候遇到这样一个需求:要求设备能够按照用户的设置,以各种方式显示时间及日期:时间-24小时制/12小时制;日期-年月日/月日年/日月年。那时候,只懂得用最基本的方法去得到 struct tm 这个结构体,然后再一个个判断条件输出。刚开始写的代码非常啰嗦,被同事笑了一番,然后才得知有 strftime() 这么好用的一个函数。同时也领悟到了某位大佬的那句话:“你遇到的问题,其实很多人都遇到过...原创 2018-10-07 23:14:20 · 8422 阅读 · 0 评论 -
创建及终止一个线程
在工作中遇到一个问题:在程序中需要创建一个线程,间隔若干秒循环地监测某个变量,并且能够随时的终止这个线程,同时又需要保证线程的唯一性。在此把相关的逻辑抽离出来,总结的代码如下:/* 创建及终止一个线程,同时保证线程的唯一性 */static pthread_t test_tid;//线程函数static void *test_thread(void *arg){ wh...原创 2018-10-07 22:08:22 · 385 阅读 · 0 评论 -
关于UTF-8、GBK编码以及编译时charset的指定的一些总结
首先分清两个概念:C文件中(转换为16进制)汉字的编码,编译后bin文件中汉字的编码。gcc的 -finput-charset和-fexec-charset两个选项的存在就是为了实现这两者的转换。1.默认情况下,gcc使用UTF-8 charset。2. C文件中使用GBK编码的汉字:若要使bin文件为UTF-8编码,必须同时指定 -finput-charset=GBK,-fe...原创 2018-02-04 17:42:08 · 10821 阅读 · 4 评论 -
C语言不定长字符串数组运用的一个例子
最近在工作中遇到一个问题:需要将一个或多个文件路径与某个结构体或结构体数组关联起来,以对结构体进行初始化。我需要为这个操作写一个统一格式的接口。中间遇到一些不太理解的地方,我参考了这篇文章:https://blog.csdn.net/xudongdong99/article/details/6723163 ,对二维数组的传参有有了更多的理解。其实说到底,这些都是技巧上的问题而已。现在把我的代码...原创 2018-07-21 17:45:40 · 6121 阅读 · 0 评论