分享下自己习惯的.clang-format配置

都配上了注释, 根据自己的喜好来设置自己的clang-format文件吧。让你的C/C++看起来更美观!

---
# 语言: None, Cpp, Java, JavaScript, ObjC, Proto, TableGen, TextProto
Language:        Cpp
# BasedOnStyle:  Google

# 访问说明符(public、private等)的偏移
AccessModifierOffset: -4
# 开括号(开圆括号、开尖括号、开方括号)后的对齐: Align, DontAlign, AlwaysBreak(总是在开括号后换行)
AlignAfterOpenBracket: Align
# 连续赋值时,对齐所有等号
AlignConsecutiveAssignments: false
# 连续声明时,对齐所有声明的变量名
AlignConsecutiveDeclarations: false
# 转义的换行符左对齐: true, false
AlignEscapedNewlinesLeft: true
# 操作符的对齐: true, false
AlignOperands:   true
# 尾随注释的对齐: true, false
AlignTrailingComments: true
# 允许所有参数在声明时在下一行: true, false
AllowAllParametersOfDeclarationOnNextLine: true
# 允许短块在同一行: true, false
AllowShortBlocksOnASingleLine: false
# 允许短case标签在同一行: true, false
AllowShortCaseLabelsOnASingleLine: false
# 允许短函数在同一行: true, false
AllowShortFunctionsOnASingleLine: All
# 允许短if语句在同一行: true, false
AllowShortIfStatementsOnASingleLine: true
# 允许短循环语句在同一行: true, false
AllowShortLoopsOnASingleLine: true
# 定义返回类型后是否总是换行: None, All, TopLevel
AlwaysBreakAfterDefinitionReturnType: None
# 总是在返回类型后换行: None, All, TopLevel(顶级函数,不包括在类中的函数), 
# AllDefinitions(所有的定义,不包括声明), TopLevelDefinitions(所有的顶级函数的定义)
AlwaysBreakAfterReturnType: None
# 总是在多行字符串前换行: true, false
AlwaysBreakBeforeMultilineStrings: true
# 总是在模板声明后换行: true, false
AlwaysBreakTemplateDeclarations: false
# false表示函数实参要么都在同一行,要么都各自一行
BinPackArguments: true
# false表示所有形参要么都在同一行,要么都各自一行
BinPackParameters: true
# 大括号换行,只有当BreakBeforeBraces设置为Custom时才有效
BraceWrapping:
  # class定义后面
  AfterClass:      false
  # 控制语句后面
  AfterControlStatement: false
  # enum定义后面
  AfterEnum:       false
  # 函数定义后面
  AfterFunction:   false
  # 命名空间定义后面
  AfterNamespace:  false
  # 结构体定义后面
  AfterStruct:     false
  # 联合体定义后面
  AfterUnion:      false
  # 在catch块之前换行
  AfterObjCDeclaration: false
  # 在else块之前换行
  BeforeElse:      false
  # 在catch块之前换行
  BeforeCatch:     false
  # 缩进大括号
  IndentBraces:    false
    # 分离空函数
  SplitEmptyFunction: false
  # 分离空语句
  SplitEmptyRecord: false
  # 分离空命名空间
  SplitEmptyNamespace: false
# 在二元运算符前换行: None(在操作符后换行), NonAssignment(在非赋值的操作符前换行), All(在操作符前换行) 
BreakBeforeBinaryOperators: None
# 在大括号前换行: Attach(始终将大括号附加到周围的上下文), Linux(除函数、命名空间和类定义,与Attach类似), 
#   Mozilla(除枚举、函数、记录定义,与Attach类似), Stroustrup(除函数定义、catch、else,与Attach类似), 
#   Allman(总是在大括号前换行), GNU(总是在大括号前换行,并对于控制语句的大括号增加额外的缩进), WebKit(在函数前换行), Custom
#   注:这里认为语句块也属于函数
BreakBeforeBraces: Custom
# 在三元运算符前换行 true, false
BreakBeforeTernaryOperators: true
# 在构造函数初始化列表中,逗号后是否换行: true, false
BreakConstructorInitializersBeforeComma: true
# 在Java字段注解后换行: true, false
BreakAfterJavaFieldAnnotations: false
# 在字符串字面量前换行: true, false
BreakStringLiterals: true
# 列限制: 0表示不限制列数
ColumnLimit:     100
# 注释风格: 
CommentPragmas:  '^ IWYU pragma:'
# 构造函数的初始化列表要么都在同一行,要么都各自一行
ConstructorInitializerAllOnOneLineOrOnePerLine: true
# 构造函数初始化列表的缩进宽度
ConstructorInitializerIndentWidth: 8
# 换行缩进宽度
ContinuationIndentWidth: 8
# 去除C++11的列表初始化的大括号{后和}前的空格
Cpp11BracedListStyle: true
# 指针对齐方式: Left, Right, Middle
DerivePointerAlignment: false
# 禁止格式化: true, false
DisableFormat:   false
# 自动检测二进制打包: true, false
ExperimentalAutoDetectBinPacking: true
# 宏定义的缩进宽度
ForEachMacros:   [ foreach, Q_FOREACH, BOOST_FOREACH ]
IncludeCategories:
  - Regex:           '^<.*\.h>'
    Priority:        1
  - Regex:           '^<.*'
    Priority:        2
  - Regex:           '.*'
    Priority:        3
IncludeIsMainRegex: '([-_](test|unittest))?$'
# 缩进case标签
IndentCaseLabels: true
# 缩进宽度
IndentWidth:     4
# 函数返回类型换行时,缩进函数声明或函数定义的函数名
IndentWrappedFunctionNames: false
# 字符串字面量的引号风格: Leave, Add, Remove
JavaScriptQuotes: Leave
# 导入语句是否换行: true, false
JavaScriptWrapImports: true
# 空行是否保留: true, false
KeepEmptyLinesAtTheStartOfBlocks: false
# 最大连续空行数: 1
MaxEmptyLinesToKeep: 1
# 命名空间缩进: None, Inner, All
NamespaceIndentation: None
# 块缩进宽度
ObjCBlockIndentWidth: 2
# 协议列表前是否加空格: true, false
ObjCSpaceAfterProperty: false
# 协议列表前是否加空格: true, false
ObjCSpaceBeforeProtocolList: false
# 换行前的空格数: 0表示不限制
PenaltyBreakBeforeFirstCallParameter: 1
# 注释换行时,注释的缩进宽度: 0表示不缩进
PenaltyBreakComment: 300
# 连续的<后是否换行: true, false
PenaltyBreakFirstLessLess: 120
# 字符串字面量换行时,字符串字面量的缩进宽度: 0表示不缩进
PenaltyBreakString: 1000
# 超过行宽的字符数: 1000000
PenaltyExcessCharacter: 1000000
# 函数返回类型单独一行时的缩进宽度: 0表示不缩进
PenaltyReturnTypeOnItsOwnLine: 200
# 指针对齐方式: Left, Right, Middle
PointerAlignment: Left
# 注释是否换行: true, false
ReflowComments:  true
# 允许排序#include
SortIncludes:    true
# 空格是否在C风格类型转换后: true, false
SpaceAfterCStyleCast: false
# 空格是否在模板关键字后: true, false
SpaceAfterTemplateKeyword: true
# 赋值运算符前是否加空格: true, false
SpaceBeforeAssignmentOperators: true
# 左括号前是否加空格: ControlStatements(控制语句的左括号前加空格), Always(总是加空格), Never(从不加空格)
SpaceBeforeParens: ControlStatements
# 空括号是否加空格: true, false
SpaceInEmptyParentheses: false
# 注释前的空格数: 2
SpacesBeforeTrailingComments: 2
# 角括号前是否加空格: true, false
SpacesInAngles:  false
# 容器字面量的元素间是否加空格: true, false
SpacesInContainerLiterals: true
# 类型转换的圆括号前是否加空格: true, false
SpacesInCStyleCastParentheses: false
# 圆括号内是否加空格: true, false
SpacesInParentheses: false
# 方括号内是否加空格: true, false
SpacesInSquareBrackets: false
# 代码风格: Auto, LLVM, Google, Chromium, Mozilla, WebKit, GNU
Standard:        Auto
# 缩进宽度: 2, 4, 8, 16, 32, 64
TabWidth:        4
# 使用Tab还是空格: Never, ForIndentation, ForContinuationAndIndentation, Always
UseTab:          Never
---
Language:        ObjC
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: true
AlignOperands:   true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: false
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
  AfterClass:      false
  AfterControlStatement: false
  AfterEnum:       false
  AfterFunction:   false
  AfterNamespace:  false
  AfterObjCDeclaration: false
  AfterStruct:     false
  AfterUnion:      false
  BeforeCatch:     false
  BeforeElse:      false
  IndentBraces:    false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Custom
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: true
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit:     100
CommentPragmas:  '^ IWYU pragma:'
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 8
ContinuationIndentWidth: 8
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat:   false
ExperimentalAutoDetectBinPacking: true
ForEachMacros:   [ foreach, Q_FOREACH, BOOST_FOREACH ]
IncludeCategories:
  - Regex:           '^<.*\.h>'
    Priority:        1
  - Regex:           '^<.*'
    Priority:        2
  - Regex:           '.*'
    Priority:        3
IncludeIsMainRegex: '([-_](test|unittest))?$'
IndentCaseLabels: true
IndentWidth:     4
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: false
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Left
ReflowComments:  true
SortIncludes:    true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles:  false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard:        Auto
TabWidth:        4
UseTab:          Never
...


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容