113 lines
3.0 KiB
Markdown
113 lines
3.0 KiB
Markdown
# myBase.h — 公共基础定义 API 参考
|
||
|
||
## 模块概述
|
||
|
||
myBase.h 是所有模块共享的基础头文件。提供通用宏、类型别名、字节序转换、数据类型常量等。
|
||
|
||
## 终端颜色码
|
||
|
||
```c
|
||
#define COLOR_RESET "\033[0m" // 重置
|
||
#define COLOR_RED "\033[31m" // 红色
|
||
#define COLOR_GREEN "\033[32m" // 绿色
|
||
#define COLOR_YELLOW "\033[33m" // 黄色
|
||
#define COLOR_BLUE "\033[34m" // 蓝色
|
||
#define COLOR_MAGENTA "\033[35m" // 品红
|
||
#define COLOR_CYAN "\033[36m" // 青色
|
||
#define COLOR_WHITE "\033[37m" // 白色
|
||
```
|
||
|
||
**示例**:
|
||
```c
|
||
printf(COLOR_RED "错误: %s" COLOR_RESET "\n", "连接失败");
|
||
```
|
||
|
||
## 文件名缩写
|
||
|
||
```c
|
||
#define __SHORT_FILE__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
|
||
```
|
||
自动去掉文件路径前缀,跨平台兼容(Linux 用 `/`,Windows 用 `\`)。
|
||
|
||
## 简易日志宏
|
||
|
||
```c
|
||
#define MY_LOG(color, level, fmt, ...) // 控制台日志(带颜色)
|
||
#define MY_LOG_I(fmt, ...) // INFO(白色)
|
||
#define MY_LOG_E(fmt, ...) // ERROR(红色)
|
||
```
|
||
|
||
## LOCAL 修饰符
|
||
|
||
```c
|
||
#define LOCAL static
|
||
```
|
||
语义化表示"文件内可见",等价于 `static`。
|
||
|
||
## 定长字符串类型
|
||
|
||
```c
|
||
typedef char S_STR[64]; // 64 字节短字符串
|
||
typedef char L_STR[128]; // 128 字节长字符串
|
||
```
|
||
|
||
## 字节序转换宏
|
||
|
||
### uint16
|
||
|
||
| 宏 | 功能 |
|
||
|----|------|
|
||
| `BE16_GET(p)` | 大端字节序 → uint16 |
|
||
| `BE16_SET(m, n)` | uint16 → 大端字节序 |
|
||
| `LE16_GET(p)` | 小端字节序 → uint16 |
|
||
| `LE16_SET(m, n)` | uint16 → 小端字节序 |
|
||
|
||
### int32
|
||
|
||
| 宏 | 功能 |
|
||
|----|------|
|
||
| `BE32_GET(p)` / `BE32_SET(m, n)` | 大端 int32 |
|
||
| `LE32_GET(p)` / `LE32_SET(m, n)` | 小端 int32 |
|
||
|
||
### uint64
|
||
|
||
| 宏 | 功能 |
|
||
|----|------|
|
||
| `BE64_GET(p)` / `BE64_SET(m, n)` | 大端 uint64 |
|
||
| `LE64_GET(p)` / `LE64_SET(m, n)` | 小端 uint64 |
|
||
|
||
**示例**:
|
||
```c
|
||
uint8_t buf[4] = { 0x00, 0x00, 0x00, 0xFF };
|
||
uint32_t val = BE32_GET(buf);
|
||
printf("val = %u\n", val); // 255
|
||
```
|
||
|
||
## 类型化数据存取
|
||
|
||
```c
|
||
#define GET_BY_TYPE(p, type) (*(type *)(p))
|
||
#define SET_BY_TYPE(p, v, type) (*(type *)(p) = *(type *)(v))
|
||
```
|
||
|
||
## 数据类型常量(22 种,用于协议编解码)
|
||
|
||
| 常量 | 值 | 含义 | 常量 | 值 | 含义 |
|
||
|------|-----|------|------|-----|------|
|
||
| `DATA_TYPE_B` | 1 | bool | `DATA_TYPE_IP` | 100 | IP 地址 |
|
||
| `DATA_TYPE_S8` | 43 | int8 | `DATA_TYPE_MAC` | 101 | MAC 地址 |
|
||
| `DATA_TYPE_U8` | 32 | uint8 | `DATA_TYPE_C8` | 102 | char[8] |
|
||
| `DATA_TYPE_S16` | 33 | int16 | `DATA_TYPE_C32` | 103 | char[32] |
|
||
| `DATA_TYPE_U16` | 45 | uint16 | `DATA_TYPE_C64` | 104 | char[64] |
|
||
| `DATA_TYPE_S32` | 2 | int32 | `DATA_TYPE_C128` | 105 | char[128] |
|
||
| `DATA_TYPE_U32` | 35 | uint32 | `DATA_TYPE_C1` | 106 | char[1] |
|
||
| `DATA_TYPE_L64` | 36 | int64 | `DATA_TYPE_STR` | 107 | string |
|
||
| `DATA_TYPE_UL64` | 37 | uint64 | | | |
|
||
| `DATA_TYPE_F32` | 38 | float | | | |
|
||
| `DATA_TYPE_D64` | 39 | double | | | |
|
||
|
||
## 依赖关系
|
||
|
||
- **依赖**: 标准 C/POSIX 头文件
|
||
- **被依赖**: 所有模块
|