![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux C
.Zzz..
这个作者很懒,什么都没留下…
展开
-
C位域定义
struct name{ type var_name : n;};该种形式出现于结构体或共用体的定义中,是位域定义的标准形式。含义为,在结构体name中,成员变量var_name占用空间为n位。n为正整数,其值必须小于type类型占用的位数。比如type如果是int,占4字节32位,那么n必须是1~31之间的整数。对于位域类型的成员,在赋值时如果实际值超过n位所能表达的范围,那么超出部分将会被截掉,只保存低位值。如int var:4,本身只有4位的空间,如果赋值var = 20, 由于原创 2020-11-07 23:05:51 · 331 阅读 · 0 评论 -
*((volatile unsigned int*)0xFFE00000)这种格式的理解
#define IO0PIN(*((volatile unsigned long *) 0xE0028000))以此句为例,简述如下:与51单片机的头文件类似,在ARM处理器中,也必须有自己的寄存器头文件声明,不同的是,在ARM应用中,需要用户自己来编写。0xE0028000:在ARM处理器中,只能识别为一个十六进制数值,具体是数据还是地址,它并不能自动区分.而使用(v转载 2016-10-23 16:15:06 · 904 阅读 · 0 评论 -
volatile
static int key_cnt = 0;static volatile int key_cnt = 0; 告诉编译器变量key_cnt是一个“易变”的变量,即随时都可能改变的变量,对该变量进行处理的时候,编译器不会对其进行优化。 总结:volatile的应用场合:1、定义硬件寄存器。2、应用程序和中断处理程序共享的全局变量。3、多线程编程时,不同线翻译 2017-03-13 22:48:51 · 490 阅读 · 0 评论 -
编写优质嵌入式C程序(转)
转载请注明出处:http://blog.csdn.net/zhzht19861011/article/details/45508029转载 2017-11-29 09:39:55 · 454 阅读 · 0 评论 -
几种内存泄露检测工具的比较
概述内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的、复杂的应用程序中,内存泄漏是常见的问题。当以前分配的一片内存不再需要使用或无法访问时,但是却并没有释放它,这时就出现了内存泄漏。尽管优秀的编程实践可以确保最少的泄漏,但是根据经验,当使用大量的函数对相同的内存块进行处理时,很可能会出现内存泄漏。内存泄露可以分为以下几类:1.转载 2017-11-26 16:26:10 · 1316 阅读 · 0 评论 -
C语言中的危险函数
函数严重性解决方案gets最危险使用 fgets(buf, size, stdin)。这几乎总是一个大问题!strcpy很危险改为使用 strncpy。strcat很危险改为使用 strncat。sprintf很危险改为使用 snprintf,或者转载 2017-12-27 09:22:48 · 5952 阅读 · 0 评论 -
C函数返回局部变量
一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意转载 2018-02-07 11:03:06 · 502 阅读 · 0 评论