![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 67
Mbwide
点灯大师!
展开
-
不可重入函数
不可重入函数1 什么是可重入性**可重入函数:**可重入函数可以由多个任务并发使用,而不必担心数据错误**不可重入函数:**不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据;可重入函数要么使用本地变量,要么使用全局变量是保护自己的数据2 可重入函数不为连续的调用持有静态数据不返回指向静态数据的指针,所有数据都由函数的调用者提供使用本地数据,或者通过制作全局数据的本地拷贝来保护全局数据原创 2021-05-20 21:25:22 · 3126 阅读 · 0 评论 -
函数编写规范
函数编写规范对所调用函数的错误返回码要仔细、全面地处理明确函数功能,精确(而不是近似)地实现函数设计编写可重入函数时,应注意局部变量的使用(如编写C/C++ 语言的可重入函数时,应使用auto 即缺省态局部变量或寄存器变量)说明:编写C/C++语言的可重入函数时,不应使用static局部变量,否则必须经过特殊处理,才能使函数具有可重入性。编写可重入函数时,若使用全局变量,则应通过关中断、信号量(即P 、V 操作)等手段对其加以保护 说明:若对所使用的全局变量不加以保护,则此函数就转载 2021-05-20 21:20:03 · 462 阅读 · 0 评论 -
C语言的变量存储方式和关键词
5种变量存储类自动变量用auto修饰或者不修饰就默认属于自动存储类的变量,具有自动存储周期、代码块作用域、空连接。在默认下,在代码快或者函数的头部定义的任意变量都属于自动存储类。初始化,除非手动初始化,否则不会被自动初始化。如果在内层中使用和外层一样名字的变量,则内层会覆盖外层变量,在程序离开内层代码块时,外部变量就恢复了其作用和之前的值。 对于自动变量,除非显式的初始化,否则不会自动初始化。寄存器变量通过register声明,放在寄存器而非内存中,所以无法获得其地址。注意,有时候虽然请求了把原创 2020-12-29 20:47:33 · 346 阅读 · 0 评论 -
FreeRTOS任务函数与函数指针
typedef void (*TaskFunction_t)(void *);void led0_task(void *pvParameters){ while(1) { LED0 = ~LED0; vTaskDelay(500); }} //TaskFunction_t led0_task //等价于 //void led0_task(void *pvParameters)(TaskFunction_t)led1_task//强制转原创 2020-12-13 22:56:42 · 1121 阅读 · 0 评论 -
C语言位运算过程会将数据大小提升为int
C语言位运算过程会将数据大小提升为inta<<3这个表达式的运算结果类型为int,这是C标准规定。 #include<stdio.h> int main() { unsigned char a = 0x8A; a <<= 3; printf("%X",a); return 0;}C标准规定在进行位运算时,a<<3这个表达式,a运算时会被类型提升为intint main原创 2020-12-12 22:04:34 · 433 阅读 · 0 评论 -
malloc/calloc/realloc区别与联系
malloc/calloc/realloc区别与联系malloc/calloc/realloc和free介绍:1 malloc函数定义与声明: 在堆上,分配n个字节,并返回void指针类型。其函数声明如下:void * malloc(int n);参数释义:n:申请空间大小(单个类型大小*总个数)//类型大小为字节函数详述:函数返回值为void型指针。如果执行成功,函数从堆上获得n个字节的空间,并返回该空间的首地址。如果执行失败,函数返回NULL。由于malloc函数值的类型为v原创 2020-12-09 21:29:34 · 110 阅读 · 0 评论 -
C陷阱与缺陷低配版
*和++有相等的优先级,结合自右向左,指针自增1。即先把指针指向的数据加到a上,指针再增1。a += *a++;a += *(a++);//清晰ar[i]和*(ar+i)的意义是等价的,但是只有当ar是一个指针变量时,才可以使用ar++这样的表达式。数组形式中,ar是地址常量,与&ar[0]一样,可以使用ar+1标识数组里的下一个元素。增量运算符只能用在变量名前,不能用在常量前。*ar 中的ar是指针变量,即在指针形式中,ar是指针变量。C 库函数 void *.原创 2020-11-30 22:09:35 · 94 阅读 · 0 评论 -
printf出入栈详解
1. 从++i和i++说起int main(){ int i = 0; //i++ = 100; //直接报错,编译出错: error C2106: “=”: 左操作数必须为左值 ++i = 100; //通过,没有错误 printf("%d", i); //直接打印100 return 0;}从上面的代码情况可以认为编译器在处理i++和++i的方式不同i++完成之后返回的是右值也就是一个常量++i完成之后返回的是左值也就是i原创 2020-11-30 21:32:07 · 1293 阅读 · 0 评论