VS Code下载
官网下载:code.visualstudio.com
安装C/C++扩展支持
- Ctrl+Shift+P 输入 install extensions,选择安装C/C++ for Visual Studio Code
设置编辑器基本配置
-
File->Preferences->Settings,打开用户设置。VScode支持选择配置,也支持编辑setting.json文件修改默认配置。 -
editor.fontsize 用来设置字体大小,可以设置editor.fontsize : 14; -
files.autoSave 这个属性是表示文件是否进行自动保存,推荐设置为onFocusChange–文件焦点变化时自动保存。 -
editor.tabCompletion用来在出现推荐值时,按下Tab键是否自动补全,推荐设置为on -
editor.codeActionsOnSave中的source.organizeImports属性,这个属性能够在保存时,自动调整 import 语句相关顺序,能够让你的 import 语句按照字母顺序进行排列 -
editor.lineNumbers 设置代码行号,即editor.lineNumbers :true;
参考官网C/C++编辑器指导文档
官网C/C++编辑器指导文档链接
设置头文件目录
默认情况下,只搜索当前源目录、其子目录和某些特定于平台的位置。如果找不到引用的头文件,VSCode会在引用它的每个#include指令下面显示一个绿色的波形符号。将光标放在绿色波浪线的#include指令上,会出现灯泡,点击可打开 c_cpp_properties.json,编辑’browse.path’ 属性,可增加更多头文件目录。
显示成员
变量使用(. or -> )时会自动列出成员列表。
Code格式化
-
C/C++扩展支持内置了clang-format工具来格式化代码。没有的话,可以单独在扩展支持中安装Clang-Format。 -
右键菜单选择 Format Document (Ctrl+Shift+I) 格式化全文或者 选中一段代码右键选择Format Selection (Ctrl+K Ctrl+F) 来格式化这段代码。 -
Settings 中还可以配置以下选项 editor.formatOnSave - 保存时自动格式化Code editor.formatOnType - 输入; 自动格式化Code -
默认情况下,clang-format的格式是以.clang-format 文件形式保存的。如果工作区中找到.clang-format 文件,将根据文件中指定的样式应用。如果在未找到.clang-format 文件,则将会使用设置中的C_Cpp.clang_format_fallbackStyle 配置来确定样式。C_Cpp.clang_format_fallbackStyle 默认的格式化样式是“VisualStudio”,它是VisualStudio中默认代码格式化程序的近似形式。可调整成Google。 VS Code 使用的clang-format 并不是正式的 clang-format 工具,它包含以下clang-format 设置: UseTab: (VS Code current setting)
IndentWidth: (VS Code current setting)
BreakBeforeBraces: Allman
AllowShortIfStatementsOnASingleLine: false
IndentCaseLabels: false
ColumnLimit: 0
如果要换成其他版本的clang-format 工具,可以在设置中的C_Cpp.clang_format_path 指定路径。 "C_Cpp.clang_format_path": "C:\\Program Files (x86)\\LLVM\\bin\\clang-format.exe"
clang-format
安装
ubuntu上可以直接安装。VSCode默认内置的clang-format版本与我们自己安装的版本可能不同,必要时也可以替换成我们自己安装的: "C_Cpp.clang_format_path": "/usr/bin/clang-format"
sudo apt install clang-format
which clang-format
> /usr/bin/clang-format
简介
clang-format是基于LibFormat封装的工具,用于格式化代码。目前支持 C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C#代码格式化。
$ clang-format -h
OVERVIEW: A tool to format C/C++/Java/JavaScript/Objective-C/Protobuf/C
If no arguments are specified, it formats the code from standard input
and writes the result to the standard output.
If <file>s are given, it reformats the files. If -i is specified
together with <file>s, the files are edited in-place. Otherwise, the
result is written to the standard output.
USAGE: clang-format [options] [<file> ...]
OPTIONS:
--Werror - If set, changes formatting warnings to errors
--assume-filename=<string> - Override filename used to determine the language.
When reading from stdin, clang-format assumes this
filename to determine the language.
--cursor=<uint> - The position of the cursor when invoking
clang-format from an editor integration
--dry-run - If set, do not actually make the formatting changes
--dump-config - Dump configuration options to stdout and exit.
Can be used with -style option.
--fallback-style=<string> - The name of the predefined style used as a
fallback in case clang-format is invoked with
-style=file, but can not find the .clang-format
file to use.
Use -fallback-style=none to skip formatting.
--ferror-limit=<uint> - Set the maximum number of clang-format errors to emit before stopping (0 = no limit). Used only with --dry-run or -n
--help - Display available options (--help-hidden for more)
-i - Inplace edit <file>s, if specified.
--length=<uint> - Format a range of this length (in bytes).
Multiple ranges can be formatted by specifying
several -offset and -length pairs.
When only a single -offset is specified without
-length, clang-format will format up to the end
of the file.
Can only be used with one input file.
--lines=<string> - <start line>:<end line> - format a range of
lines (both 1-based).
Multiple ranges can be formatted by specifying
several -lines arguments.
Can't be used with -offset and -length.
Can only be used with one input file.
-n - Alias for --dry-run
--offset=<uint> - Format a range starting at this byte offset.
Multiple ranges can be formatted by specifying
several -offset and -length pairs.
Can only be used with one input file.
--output-replacements-xml - Output replacements as XML.
--sort-includes - If set, overrides the include sorting behavior determined by the SortIncludes style flag
--style=<string> - Coding style, currently supports:
LLVM, Google, Chromium, Mozilla, WebKit.
Use -style=file to load style configuration from
.clang-format file located in one of the parent
directories of the source file (or current
directory for stdin).
Use -style="{key: value, ...}" to set specific
parameters, e.g.:
-style="{BasedOnStyle: llvm, IndentWidth: 8}"
--verbose - If set, shows the list of processed files
--version - Display the version of this program
Coding style
-
当前开放的code style有: LLVM, Google, Chromium, Mozilla, WebKit. -
使用 clang-format 配置code style: 基于google样式,调整缩进宽度为4个空格: clang-format -style="{BasedOnStyle: google, IndentWidth: 4}
基于google样式,导出全部的配置到文件中 clang-format -style=google -dump-config > .clang-format
打开.clang-format 编辑一些配置,形成自己的格式配置文件,放置到工程目录下, 将.clang-format 配置到 clang-format cd projects/Demo
clang-format -style=file
-
在VSCode中,已安装了clang-format扩展支持的,则工作目录下的.clang-format (当前编码文件的目录以及父目录)自动生效。 -
clang-format 配置文件中的具体配置项的意义可参考 ClangFormatStyleOptions,以下为几个常见的配置:
配置项 | 说明 |
---|
IndentWidth: 2 | 缩进使用几个空格 | AlignAfterOpenBracket: Align | 括号内容换行,则换行的内容是否与上一行的左括号对齐。不对齐的话使用默认缩进格式 | UseTab: Never | 代码中tab会被空格替换 | BreakBeforeBraces: Allman | 大括号始终换行 | AllowShortIfStatementsOnASingleLine: false | if else 条件语句独立一行,不与执行语句同行 | IndentCaseLabels: false | case 行是否要缩进 | ColumnLimit: 0 | 单行字符个数限制,超过则换行。 0表示没有限制。 |
-
Goodle C++代码一般选择Google风格代码。 -
kernel代码风格可基于LLVM略微调整: BasedOnStyle: LLVM
IndentWidth: 8
UseTab: Always
BreakBeforeBraces: Linux
AllowShortIfStatementsOnASingleLine: false
IndentCaseLabels: false
-
其他有强制要求的代码风格可逐项根据规范调整。调整配置参考 ClangFormatStyleOptions
参考
官网C/C++编辑器指导文档
vscode C++ 开发配置 google code style
|