Vscode C/C++编程指南

优雅地使用Vscode进行C/C++编程指南,存储配置文件

介绍:

使用前请根据配置文件下载并将编译器mingw放在合适位置,根据配置文件进行修改和调整。
以下配置项目可供C/C++单文件程序日常使用。

配置所需插件
配置目录结构

配置文件(vscodecpp):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"configurations": [
{
"name": "win",
"includePath": [
"${workspaceFolder}/**",
"D:/programs/mingw/include"
],
"defines": [],
"compilerPath": "D:/programs/mingw/bin/g++.exe",
"cStandard": "c11",
"cppStandard": "c++11",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// https://github.com/Microsoft/vscode-cpptools/blob/master/launch.md
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
"environment": [], // 环境变量
"externalConsole": true, // 为true时使用单独的cmd窗口,与其它IDE一致;18年10月后设为false可调用VSC内置终端
"internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
"MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但我没试过lldb
"miDebuggerPath": "gdb.exe", // 调试器路径,Windows下后缀不能省略,Linux下则不要
"setupCommands": [
{ // 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "Compile" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{
"files.defaultLanguage": "cpp", // ctrl+N新建文件后默认的语言
"editor.formatOnType": true, // 输入分号(C/C++的语句结束标识)后自动格式化当前这一行的代码
"files.autoSave": "onFocusChange",
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.acceptSuggestionOnEnter": "on", // 我个人的习惯,按回车时一定是真正的换行,只有tab才会接受Intellisense
"editor.minimap.enabled": true,
"C_Cpp.autocomplete": "default",
"[cpp]": {
"editor.quickSuggestions": {
"comments": "on",
"strings": "on",
"other": "on"
},
"editor.wordBasedSuggestions": "matchingDocuments",
"editor.formatOnType": true,
},
"[c]": {
"editor.quickSuggestions": {
"comments": "on",
"strings": "on",
"other": "on"
},
"editor.wordBasedSuggestions": "matchingDocuments",
"editor.formatOnType": true,
},
"code-runner.runInTerminal": true, // 设置成false会在“输出”中输出,无法输入
"code-runner.executorMap": {
//"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc -fexec-charset=GBK && $dir$fileNameWithoutExt",
//"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc -fexec-charset=UTF-8 && $dir$fileNameWithoutExt"
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc -std=c17 -fexec-charset=UTF-8 && $dir$fileNameWithoutExt",
"cpp": "clear && cd $dir && g++ $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc -fexec-charset=GBK -std=c++17 && $dir$fileNameWithoutExt"
}, // 右键run code时运行的命令;未注释的仅适用于PowerShell(Win10默认),文件名中有空格也可以编译运行;注释掉的适用于cmd(win7默认),PS和bash也能用,但文件名中有空格时无法运行
"code-runner.saveFileBeforeRun": true, // run code前保存
"code-runner.preserveFocus": true, // 若为false,run code后光标会聚焦到终端上。如果需要频繁输入数据可设为false
"code-runner.clearPreviousOutput": false, // 每次run code前清空属于code runner的终端消息,默认false
"code-runner.ignoreSelection": true, // 默认为false,效果是鼠标选中一块代码后可以单独执行,但C是编译型语言,不适合这样用
"C_Cpp.clang_format_sortIncludes": true,
"files.associations": {
"array": "cpp",
"atomic": "cpp",
"*.tcc": "cpp",
"cctype": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"deque": "cpp",
"unordered_map": "cpp",
"vector": "cpp",
"exception": "cpp",
"algorithm": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"optional": "cpp",
"string": "cpp",
"string_view": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"fstream": "cpp",
"initializer_list": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"istream": "cpp",
"limits": "cpp",
"new": "cpp",
"ostream": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"typeinfo": "cpp"
}, // 格式化时调整include的顺序(按字母排序)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{
"version": "2.0.0",
"tasks": [
{
"label": "Compile",
"command": "g++",
"args": [
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe",
"-g",
"-Wall",
"-static-libgcc",
"-fexec-charset=GBK",
"-std=c++11"
],
"type": "process",
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
}
},
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "D:\\programs\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
]
}
1
2
3
4
del *.exe /q /s
del tempCodeRunnerFile.c /q /s
del a.out /q /s
del *.o /q /s

注意这个文件要在.vscode同级目录下。

工作原理:

使用vscode要先打开一个工作区(文件夹),编写的程序也存放在这个工作区里。使用文件夹(工作区)存放一个程序项目,原则上一个文件放置一个程序项目(单文件程序可以放多个不同的程序)。在文件夹(工作区)里放置vscode的配置文件,用于配置编程所用语言及运行程序的参数,在用vscode打开文夹时加载配置文件。因此vscode可以使用几乎所有的编程语言,就是靠不同的配置放在文件夹里加以区分。

分类:

除了上面给出的vscodecpp配置文件,还有其他的配置办法,对应相关用途。这里不再给出。

  • 1、vscodecpp是写c++
  • 2、vscodeC是写c
    这两个写是单文件程序的,多个可以都放在这里边。也可以在里边建立子文件夹。
  • 3、cpp_project c++多文件
  • 4、c_project c 多文件
    cpp_project和c_project是写多文件程序的文件来个。一个子文件夹只能放一个多文件项

注:如果有以前的程序也要把程序移动到有配置文件的文件夹内才能运行。
常见错误:
1、 打开程序前,没有打开带有配置文件的文件夹;
2、 程序没有保存在当前打开的项目文件夹里;
3、 程序编写错误导致报错,无法运行;
4、 文件保存时误删除扩展名( .c或是.cpp);
5、 在项目文件夹又建立了下一级文件夹;
6、 把程序保存在了配置文件所在的文件夹里(.vsocde)


Vscode C/C++编程指南
https://43.242.201.154/2024/09/20/Vscodesolutions/
Author
Dong
Posted on
September 20, 2024
Licensed under