uC/OS - II中的代码技巧
来源:互联网 发布:淘宝名词解释大全 编辑:程序博客网 时间:2024/04/30 08:56
1. 在.h文件中定义全局变量
全局变量可以在.h文件中定义,但要保证在包含头文件的时候避免重复定义的错误,uC/OS - II中是这样实现的:
ucos_ii.h code
#ifdef OS_GLOBALS#define OS_EXT#else#define OS_EXT extern#endifOS_EXT INT8_U OSIntNesting
os_core.c code
#define OS_GLOBALS#include <ucos_ii.h>
other .c fiels code
#include <ucos_ii.h>
这样的好处是把定义和声明进行了统一,这样以后更改的时候只需要在.h文件中进行相应的修改就行。
2. 赋零函数
很多时候定义一个数组后第一步操作就是清零,(我自己)往往就是写个单独的for循环,比如:
int a[2][3];for (i = 0; i < 2; i++){ for (j = 0; j < 3; j++) { a[i][j] = 0; }}
但要是定义了多个不同维度数组后需要初始化的话就需要写多个for循环清零了,看到uC/OS - II中有这样一个函数:
void OS_MemClr(INT8U *pdest, INT16U size){ while (size > 0u) { *pdest++ = (INT8U)0; size--; }}
现在有两个数组:
char a[4][5];int b[3][7];
想要清零上述数组的话,代码如下:
OS_MemClr((INT8U*)&a[0][0], sizeof(a));OS_MemClr((INT8U*)&b[0][0], sizeof(b));
3. 去除保留变量的警告或错误提示
在编写一些函数时想保留一些变量作为以后扩展使用,但又不想编译代码时出现“变量定义但未使用”之类的警告的话,可以这么做:
void foo(int param1, int param2, int reserve){ reserve = reserve; /** do something */}
上述代码中reserve
变量保留作为扩展使用。
4. 高效获取结构体成员方法
在获取一个静态的结构体成员内容时,我采用的方法如下:
struct EXAMPLE{ char a; int b; float c;};static struct EXAMPLE p;void get_struct(struct EXAMPLE *pdata){ pdata->a = p->a; pdata->b = p->b; pdata->c = p->c;}
uC/OS - II中采用调用memcpy()函数的方法来提高复制效率,代码如下:
void get_struct(struct EXAMPLE *pdata){ memcpy(pdata, p, sizeof(struct EXAMPLE);}
5. 参数检验
uC/OS - II中的大多数函数对传入参数进行合法性检验后再进行进一步的操作。同时,在调用有返回值的函数时,对返回值的正确性进行检验和确认是良好的习惯。
6. 提高代码移植性技巧
uC/OS - II代码从不使用C语言中的short、int及long等数据类型,因为它们是与编译器相关的,是不可移植的。相反,定义的整型数据结构等既是可移植的,又很直观。
0 0
- uC/OS - II中的代码技巧
- uC/OS-II 中的任务
- uC/OS-II中的消息邮箱
- uC/OS-II中的消息邮箱
- uC/OS-II中的全局变量声明
- uC/OS-II学习中的常见问题
- 【求助】uC/OS-II中的一些疑问
- uC/OS-II中的任务管理
- uc/os-II中的任务(1)
- UC/OS-II中的任务(一)
- UC/OS-II中的任务(二)
- UC/OS-II中的任务(三)
- [uC/OS-II原理及应用]UC/OS-II中的任务
- uC/OS-II简介
- UC/OS -II入门
- uC/OS-II
- uC/OS-II 下载
- uC/OS II总结
- 如何做好架构设计与写好架构设计的文档?
- 【史上最简单】Handler和Runnable之间的通信
- 苹果Swift编程语言入门教程【中文版】
- Hibernate 缓存机制
- 在Tomcat中部署默认项目
- uC/OS - II中的代码技巧
- 欢迎测试谈感受
- 《计算机网络 自顶向下方法》读书笔记(四)
- 计算机与信息工程系课程实验报告
- 黑马程序员_多线程间的通信(生产者与消费者)
- C++11 lambda 表达式
- 第三周项目五数组作数据成员(5)
- bzoj2127: happiness 最小割
- Hbase系统架构及数据结构