语法
申明变量
- 正确 #include <stdint.h> uint8_t sizeBuffer; #include <stdbool.h> false true
- 错误 UINT8 sizeBuffer(编译器报错); FALSE TRUE(未定义类型)
申明结构体
- 如果一个结构体用于系统内部,那么对齐方式按系统默认效率更好。
- 如果一个结构体需要与外部交换(通信数据,日志数据),那么它在内存的位置需要向 1 对齐,如
#pragma pack(1) // aligned to 1 byte
typedef struct
{
uint8_t byCS;
uint8_t byTail;
} COMM_FRAME_TAIL;
#pragma pack() // restore defaults
组织源文件
头文件
- 正确 引用外部接口(函数,变量,宏等)一定要显性包含对应的头文件。如引用了 REGION_CN470 它包含在头文件 #include "main.h"
- 错误 不要借助隐性包含头文件,某些编译器会出错从而引发未知的错误。如 #include "LoRaMac.h"(尽管它包含了 "main.h")
预编译路径依赖
- 列出 project 与 头文件 所在的路径,如
D:\Project\LoRaOS\code\Project\STM32_SX1262\IAR
D:\Project\LoRaOS\code\Application\Module\Inc
- 计算相对路径:从 project 到 code 有 3 个 '\' ,那么 Inc 的相对路径:$PROJ_DIR$\..\..\..\Application\Module\Inc