1. 宏定义用法
<span style="font-family:Microsoft YaHei;font-size:12px;">#define __TERM_RES_ON(pin) \
do { \
aw_gpio_pin_cfg( (pin), AW_GPIO_OUTPUT); \
aw_gpio_set((pin), 1); \
} while(0)</span>
2. 只在内部源文件使用的函数/变量加static,即使外部有同名函数也不必担心。
3. 这排版不错
static uin32_t __ts_get (int id,
aw_can_bus_err_t err,
aw_can_bus_status_t sta);
4.使用const struct candtu_can_funs *p_funs 所赋的值必须为常量地址
5.本地结构体最好加static
6. 本地全局变量前面加__g
7. 被保护的共享资源在中断上下文中被访问,必须使用自旋锁。若在进程上下文中被访问可使用信号量,若时间较短也可使用自旋锁。
8. 使用 xxx ?xxx:xxx 看起来也很高级哦。
9. int 赋值给 char, 使用char & 0xFF看起来好一点。
10. 在init函数的形参中留一个指针结构体集合,其包含多个函数的指针,意图是登记函数,当程序往下执行触发了某个条件即可执行其中的函数。
11. 结构体集体赋值 ={}
12. 当两个线程的操作函数是同一个,应该加锁(互斥量)保护共享资源。
13. #define FOO(arg) my##arg >> FOO(abc)相当于myabc
14. #是“字符串化”的意思。#abc相当于“abc”
15. ## 就算前后都有空格,但是还是会被强连接
16. 逐个循环比较中,如果不符合用continue
17. 在结构体里添加标志flag及函数指针,flag用于保存当前已完成及未完成的时间,函数指针可通过结构体传递使得函数调用更加随意。