![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C高级
ch3rry
每天早上醒来,看见你和阳光都在,这就是我想要的未来。
展开
-
typeof()关键字
前言:typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛。一,说明typeof的参数可以是两种形式:表达式或类型。 1,表达式的的例子:typeof(x[0](1)这里假设x是一个函数指针数组,这样就可以得到这个函数返回值的类型了。如果将typeof用于表达式,则该表达式不会...原创 2019-11-05 19:17:28 · 435 阅读 · 0 评论 -
Linux C 内存管理
提到C语言,我们知道C语言和其他高级语言的最大的区别就是C语言是要操作内存的!我们需要知道——变量,其实是内存地址的一个抽像名字罢了。在静态编译的程序中,所有的变量名都会在编译时被转成内存地址。机器是不知道我们取的名字的,只知道地址。内存的使用时程序设计中需要考虑的重要因素之一,这不仅由于系统内存是有限的(尤其在嵌入式系统中),而且内存分配也会直接影响到程序的效...原创 2019-07-21 14:08:31 · 296 阅读 · 0 评论 -
多进程 VS 多线程
在Linux下编程多用多进程编程少用多线程编程。 IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical section和linux的pthread_mutex),windows比linux的要快五倍左右。当然这并不是说linux不好,而且在经过实际编程之后,综合来看我觉得linux更...转载 2019-07-21 14:22:28 · 252 阅读 · 0 评论 -
Linux C 数据结构---链表(单向链表)
线性表就是数据元素都一一对应,除只有唯一的前驱,唯一的后继。线性表存储结构分为顺序存储、链式存储。顺序存储的优点:顺序存储的缺点:链表就是典型的链式存储,将线性表L = (a0,a1,a2,........an-1)中个元素分布在存储器的不同存储块,成为结点(Node),通过地址或指针建立他们之间的练习,所得到的...原创 2019-07-22 18:45:28 · 221 阅读 · 0 评论 -
断言assert()使用简介
assert()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句,它的作用是终止程序以免导致严重后果,同时也便于查找错误。所需头文件:#include <assert.h>报告错误的条件:assert(0);void assert( ...原创 2019-07-22 18:53:59 · 385 阅读 · 0 评论 -
Linux 下的DMA浅析
DMA是一种无需CPU的参与就可以让外设和系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率。DMA经常与硬件体系结构特别是外设的总线技术密切相关。一、DMA控制器硬件结构DMA允许外围设备和主内存之间直接传输 I/O 数据, DMA 依赖于系统。每一种体系结构DMA传输不同,编程接口也不...转载 2019-07-22 20:25:04 · 510 阅读 · 0 评论