C++ 代码风格

Qt Creator 使用 ClangLibFormat库自动格式化和缩进 C++ 代码。它为一个项目或整个组织强制执行一种编码风格。

为 C++ 编辑器指定全局缩进设置:

  1. 转至首选项>C++ >Code Style

    C++ 偏好设置中的代码风格选项卡

  2. Formatting mode 中,选择:
    • Indenting Only 只缩进代码。
    • Full Formatting 使用Ctrl+I快捷键来格式化代码,而不是缩进。
    • Use Built-In Indenter 关闭ClangFormat
  3. 选择Ignore files greater than 可忽略大文件,从而加快解析速度。指定要解析的文件的最大大小。
  4. 要在输入时应用格式化,请选择Format while typing
  5. 要在保存文件时将格式应用到已编辑的代码,请选择Format edited code on file save
  6. 要为所有项目全局更改 ClangFormat 样式,请选择Use custom settings
  7. Custom settings 中,选择要更改的设置,然后选择Copy
  8. 为设置命名,然后选择OK
  9. ClangFormat 中,编辑ClangFormat 样式选项。实时预览将显示首选项如何更改缩进。如果输入了无效值,会看到警告信息。

使用内置缩进器

内置缩进器的代码样式首选项

如果在Formatting mode 中选择Use Built-In Indenter ,可以指定如何缩进:

  • 解释TabBackspace键的按下。
  • 添加宏,缩进器将其解释为不需要在末尾添加分号的完整语句。
  • 缩进类、函数、代码块和命名空间的内容。
  • 缩进类、命名空间、枚举、函数和代码块中的大括号。
  • 控制开关语句及其内容。
  • 对齐续行
  • 将类型和声明中的指针 (*) 和引用 (&) 与标识符、类型名称或左右constvolatile 关键字绑定。

指定内容设置

您可以缩进类中的公共、受保护和私有语句以及与之相关的声明。

还可以缩进函数和代码块中的语句以及命名空间中的声明。

C++ 偏好设置中 "代码样式 "选项卡的 "内容 "选项卡

为括号指定设置

可以缩进类、命名空间、枚举和函数声明以及代码块。

C++ 偏好设置中 "代码样式 "选项卡中的括号选项卡

为开关语句指定设置

您可以缩进大小写或默认语句,或开关语句中与之相关的语句或代码块。

C++ 偏好设置中 "代码风格 "选项卡的 "开关 "选项卡

指定对齐方式

要使续行与赋值后的标记对齐,如=+= ,请选择Align after assignments 。您可以在General 选项卡中指定对齐续行的其他设置。

您还可以为条件语句添加空格,使其不与下一行对齐。通常,这只影响if 语句。

C++ 偏好设置中 "代码样式 "选项卡中的 "对齐方式 "选项卡

绑定指针和引用

要将类型和声明中的指针 (*) 和引用 (&) 与标识符、类型名称或左右constvolatile 关键字绑定,请选择Pointers and References 选项卡中的复选框。

*& 字符会自动绑定到函数指针和数组指针的标识符上。

C++ 偏好设置中 "代码样式 "选项卡的 "指针和引用 "选项卡

从命令行创建 ClangFormat 文件

您可以通过命令行创建.clang-format 文件,该文件具有某种预定义样式的配置选项。例如,要创建 LLVM 风格的格式文件,请输入以下命令:

clang-format -style=llvm -dump-config > .clang-format

另请参阅 缩进文本或代码指定代码样式行为指定Qt Quick 代码样式Nim

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.