RTU/.claude/memory/code-style.md

80 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: code-style
description: 项目 C/C++ 代码格式规范 — 缩进、括号、空格、空行、条件写法
metadata:
type: feedback
---
## 缩进
使用 **Tab 字符**缩进(显示宽度 4不使用空格缩进。
## 括号风格Allman 风格)
所有大括号 **独占一行**包括函数、if、for、while、struct
```cpp
LOCAL void check_sg_zone_change()
{
if(g_sg_zone_saddr.empty())
{
return;
}
for(auto &setting : g_vec_setting)
{
if(strcmp(setting.base.saddr, zone_saddr) == 0)
{
break;
}
}
}
```
单条语句也保留大括号,不省略。
## 空格规则
- 关键字与括号之间 **不加空格**`if(`, `for(`, `while(`, `switch(`
- 函数名与括号之间 **不加空格**`func(args)`
- 指针声明:`type *name``*` 前有空格,后无空格)
- 引用声明:`type &name`
## Yoda 条件
常量写在比较运算符左侧:
```cpp
if(NULL == ptr) // ✓ 正确
if(0 != ret) // ✓ 正确
if(ptr == NULL) // ✗ 不符合项目风格
```
## 空行
- 函数之间:两行空行
- 逻辑块之间:一行空行
- `#include` 区块末尾:一行空行
## typedef struct
```cpp
typedef struct
{
uint32_t field1;
uint8_t field2;
}stru_type_name;
```
结构体成员无缩进额外层级(与 `{` 对齐)。
## 变量声明
- 局部静态变量用 `LOCAL` 宏(= `static`
- 全局变量用 `g_` 前缀
- 结构体用 `stru_` 前缀
- 枚举用 `enum_` 前缀,枚举值用 `ENUM_` 前缀
**Why:** 从项目中多个核心源文件iec61850s.cpp、self_ptl.cpp、ws_method.cpp、dc_signal.cpp提取的共识格式规范
**How to apply:** 新增代码和修改现有代码时必须遵守此格式。本次仅统一缩进/括号/空格/空行,命名问题暂不处理。