Skip to content

交流讨论: 社区通用代码格式化 - .clang-format配置文件 / 格式化工具 #3

Closed

Description

@FrozenLemonTee

目标

通过.clang-format配置文件自动处理项目源代码的缩进、空格等排版问题。

Activity

  1. SakuraKy commented on Feb 14, 2026

    @SakuraKy

    请问社区是否有偏好的基础风格(比如 Google 风格或 LLVM 风格)?

  2. Sunrisepeak commented on Feb 15, 2026

    @Sunrisepeak
    Member

    请问社区是否有偏好的基础风格(比如 Google 风格或 LLVM 风格)?

    会借鉴他们一下, 其他人也可以反馈或提供想法. 最后会具体的风格和实践放到这个仓库, 以及会写一些格式化工具进行辅助之类的

  3. changed the title [-]编写社区内通用的.clang-format配置文件[/-] [+]交流讨论: 社区通用代码格式化 - .clang-format配置文件 / 格式话工具[/+] on Feb 27, 2026
  4. pinned this issue on Feb 27, 2026
  5. FrozenLemonTee commented on Feb 28, 2026

    @FrozenLemonTee
    MemberAuthor

    标准部分注明为c++23的话,格式化会报错:

    Error reading D:/project/open_source/D2MySTL/.clang-format: Invalid argument
    D:/project/open_source/D2MySTL/.clang-format:2:11: error: unknown enumerated scalar
    Standard: c++23
              ^~~~~
    Error reading D:/project/open_source/D2MySTL/.clang-format: Invalid argument
    

    可以改为:

    Standard: Latest
  6. Creativecole commented on Feb 28, 2026

    @Creativecole
    Contributor

    请问一下这个代码风格配置是否符合mcpp规范:

    ---
    Language: Cpp
    Standard: Latest
    
    IndentWidth: 4      # 缩进宽度:4空格
    TabWidth: 4         # Tab宽度:4空格
    UseTab: Never       # 不使用Tab,只用空格
    AccessModifierOffset: -4  # 访问修饰符(public/private)向左缩进4空格
    
    BreakBeforeBraces: Attach  # 大括号附加在声明同行(如 if (x) {)
    
    PointerAlignment: Left  # 指针/引用符号紧贴类型(int* p)
    
    SpaceBeforeCpp11BracedList: true  # 在 ) 和 { 之间加空格:func( {1, 2} )
    Cpp11BracedListStyle: false       # 保留 {} 内部空格:{ 1, 2, 3 }
    
    AlwaysBreakTemplateDeclarations: Yes  # 模板声明总是换行:template<typename T>\nclass X
    
    AllowShortFunctionsOnASingleLine: Empty  # 只有空函数可以单行
    

    配置效果预览

    namespace xxx {
    
    template <typename T, std::size_t N>
    class Array {
    private:
        T data_[N];
        std::string name_;
    
    public:
        Array() = default;
        Array(std::string name) : name_(name) {}
    
        constexpr std::size_t size() const noexcept {
            return N;
        }
    
        constexpr T& at(std::size_t index) {
            if (index >= size()) {
                throw std::out_of_range { "Index out of range" };
            }
            return data_[index];
        }
    
        void function() {}
    
        std::vector<int> v { 1, 2, 3 };
    };
    
    } // namespace xxx
  7. Sunrisepeak commented on Feb 28, 2026

    @Sunrisepeak
    Member

    请问一下这个代码风格配置是否符合mcpp规范:


    Language: Cpp
    Standard: Latest

    IndentWidth: 4 # 缩进宽度:4空格
    TabWidth: 4 # Tab宽度:4空格
    UseTab: Never # 不使用Tab,只用空格
    AccessModifierOffset: -4 # 访问修饰符(public/private)向左缩进4空格

    BreakBeforeBraces: Attach # 大括号附加在声明同行(如 if (x) {)

    PointerAlignment: Left # 指针/引用符号紧贴类型(int* p)

    SpaceBeforeCpp11BracedList: true # 在 ) 和 { 之间加空格:func( {1, 2} )
    Cpp11BracedListStyle: false # 保留 {} 内部空格:{ 1, 2, 3 }

    AlwaysBreakTemplateDeclarations: Yes # 模板声明总是换行:template\nclass X

    AllowShortFunctionsOnASingleLine: Empty # 只有空函数可以单行
    配置效果预览

    namespace xxx {

    template <typename T, std::size_t N>
    class Array {
    private:
    T data_[N];
    std::string name_;

    public:
    Array() = default;
    Array(std::string name) : name_(name) {}

    constexpr std::size_t size() const noexcept {
        return N;
    }
    
    constexpr T& at(std::size_t index) {
        if (index >= size()) {
            throw std::out_of_range { "Index out of range" };
        }
        return data_[index];
    }
    
    void function() {}
    
    std::vector<int> v { 1, 2, 3 };
    

    };

    } // namespace xxx

    这个基本是和规范一样的 可以pr 补充到仓库里面

  8. changed the title [-]交流讨论: 社区通用代码格式化 - .clang-format配置文件 / 格式话工具[/-] [+]交流讨论: 社区通用代码格式化 - .clang-format配置文件 / 格式化工具[/+] on Feb 28, 2026
  9. moved this from 新手友好 to 位处理 / 待分类 in MCPP_TaskReleaseon Mar 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationgood first issueGood for newcomers

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions