# 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 头文件
- **被依赖**: 所有模块
