任务:
1. 解决遗留小问题
2. 学习开发
–
上午
首先解决VSCode中格式化代码的问题;
前两天按Ctrl + S保存是格式直接乱掉,怀疑是自带的Clang-Format配置出了问题;
参考文章:VSCode格式化C/C++代码–配置clang-format;
首先安装Clang-Format,
接着找到clang-format.exe文件路径,一般是在C:\Users"Username".vscode\extensions\ms-vscode.cpptools-0.30.0-insiders2\LLVM\bin,Username为用户自己的设定;
接着Win+R打开cmd,用命令行cd C:\Users"Username".vscode\extensions\ms-vscode.cpptools-0.30.0-insiders2\LLVM\bin定位,然后回车键入命令clang-format -style=llvm -dump-config > .clang-format,即可生成.clang-format配置文件;
接着将其复制进工程文件根目录,用VSCode打开即可进行配置;
配置参数可以参考官方文档:Clang-Format配置参数;
有大佬已经给了注释,不看英文原文档的可以参考:Clang-Format格式化选项介绍;
贴上我的配置(对着官方文档配了一小时)
样例如下:
int main(void)
{
u16 len, t;
unsigned char Byte[3];
uart_init(115200);
RCC_Configuration();
ADS1232_Init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
while(1) {
while(a == 0) {
Julizhi_Send();
if(DZ1 == 0x20 && DZ2 == 0x02 && GL1 == 0x01) {
JIZUNZI = (JL1 << 8) | JL2;
buf2[8] = 0;
buf2[9] = 0;
Send_Dwin(buf2);
while(d == 1) {
Count_Temp();
if(DZ1 == 0x20 && DZ2 == 0x00 && GL1 == 0x01) {
d = 0;
a = 1;
}
}
}
Shangxianzhi = JIZUNZI + Recive_shang;
Xiaxianzhi = JIZUNZI - Recive_xia;
}
}
}
配置如下:
---
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveMacros: true
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: true
AlignEscapedNewlines: Right
AlignOperands: true
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: false
AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Empty
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: No
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterCaseLabel: false
AfterClass: true
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
BeforeCatch: true
BeforeElse: true
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Stroustrup
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: false
ColumnLimit: 80
CommentPragmas: '^ Li pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 2
Cpp11BracedListStyle: true
DeriveLineEnding: false
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
SortPriority: 0
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
SortPriority: 0
- Regex: '.*'
Priority: 1
SortPriority: 0
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentCaseLabels: false
IndentGotoLabels: true
IndentPPDirectives: BeforeHash
IndentWidth: 4
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 4
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
ReflowComments: false
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: false
SpaceBeforeInheritanceColon: false
SpaceBeforeParens: Never
SpaceBeforeRangeBasedForLoopColon: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 4
SpacesInAngles: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
Standard: Latest
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 4
UseCRLF: false
UseTab: ForIndentation
下午
keil用Clang-format的话找不到参数设置,所以选用了另一个格式化插件Astyle;
参数配置参考官方文档:Artistic Style 3.1;