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

1.8 KiB
Raw Blame History

name description metadata
code-style 项目 C/C++ 代码格式规范 — 缩进、括号、空格、空行、条件写法
type
feedback

缩进

使用 Tab 字符缩进(显示宽度 4不使用空格缩进。

括号风格Allman 风格)

所有大括号 独占一行包括函数、if、for、while、struct

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 条件

常量写在比较运算符左侧:

if(NULL == ptr)       // ✓ 正确
if(0 != ret)          // ✓ 正确
if(ptr == NULL)       // ✗ 不符合项目风格

空行

  • 函数之间:两行空行
  • 逻辑块之间:一行空行
  • #include 区块末尾:一行空行

typedef struct

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: 新增代码和修改现有代码时必须遵守此格式。本次仅统一缩进/括号/空格/空行,命名问题暂不处理。