VSCODE配置C语言环境
首先,下载VScode。初始语言环境为英语,如果要中文语言,
或者按CTRL+SHIFT+S添加插件,如下图:
即可。其次,VScode只相当于一个文本编辑器,所以我们还需要有编译器,WIN10我们用MinGW编译器。MinGW,是Minimalist GNUfor Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。(百度百科)
安装教程:
https://blog.csdn.net/ksksjipeng/article/details/52150779
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210126114805672.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhaV80,size_16,color_FFFFFF,t_70
下载后解压到任意地方。随后设置环境变量,右键我的电脑,属性
高级系统设置
环境变量-系统变量
找到 Path 一栏-双栏-新建
确定后 打开VScode
在桌面按住SHIFT+鼠标右键
点击出输入g++或gcc出现即可。
到此环境配置就完成了。
随后进入VScode,添加插件,插件位置还是开头说的那儿
在桌面新建一个文件夹拖到VScode打开。在此文件下操作,在VScode里他会自动在你的文件夹下创立.VScode文件。
如图
点此新建文件(在你拖进来的那个文件夹下)。配置launch.json
内容重新编写如下
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Windows 上的 Bash 启动",
"type": "cppdbg",
"request": "launch",
"program": "输入程序名称,例如 ${workspaceFolder}/a.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"pipeTransport": {
"debuggerPath": "/usr/bin/gdb",
"pipeProgram": "${env:windir}\\system32\\bash.exe",
"pipeArgs": ["-c"],
"pipeCwd": ""
},
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${workspaceRoot}/${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${workspaceRoot}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
"environment": [],
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb",
"miDebuggerPath": "C:\\Users\\lenovo\\Desktop\\个人\\mingw64\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"preLaunchTask": "g++", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
注意 miDebugger的路径,注意这里要与MinGw的路径对应
3.Ctrl+Shift+P 选择Tasks: Configure Task<任务:(配置任务)>
选择使用模板创建task.json文件
选择other,进行如下设置配置tasks.json
4.切换到C程序文件处,选择顶部状态栏----->调试
5.选择 C++ (GDB/LLDB),进行如下设置
内容如下
{
"version": "2.0.0",
"command": "g++",
"args": ["-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe"], // 编译命令参数
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceFolder}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "new",
"showReuseMessage": true,
"clear": false
}
}
_cpp_properties.json代码
如果你确定不需要使用别人的库,则现在的版本不需要创建这个文件了,扩展会自动使用默认的设置。
如果你自己编写了头文件又不在workspaceFolder下,或是使用别人的库,路径就要加到includePath和browse里(不过还有别的操作要做,见下一大点的多文件编译)。如果需要递归包含,末尾加/**
此文件内容来自于Microsoft/vscode-cpptools;这个json不允许有注释(其实按照标准本来就不能有)。
如果没有合并Clang和MinGW,则该文件中的compilerPath必需修改成MinGW的完整路径,精确到gcc.exe,否则会提示找不到头文件;Linux下是/usr/bin/gcc。
Windows下的目录分隔符为反斜杠,原本应使用两个反斜杠来转义,但直接用斜杠在VS Code中也接受。
When you set the compilerPathproperty and change intelliSenseModeto clang-x64(or gcc-x64in version 0.18.0 and higher), you no longer need to copy the system include path or defines to includePath, browse.path, or definesto enable IntelliSense to work properly.
{
“configurations”: [
{
“name”: “MinGW”,
“intelliSenseMode”: “gcc-x64”,
“compilerPath”: “C:/LLVM/bin/gcc.exe”,
“includePath”: [
“KaTeX parse error: Expected '}', got 'EOF' at end of input: … "{workspaceFolder}”
],
“limitSymbolsToIncludedHeaders”: true,
“databaseFilename”: “”
},
“cStandard”: “c11”,
“cppStandard”: “c++17”
}
],
“version”: 4
}
settings.json代码
{
“files.defaultLanguage”: “c”, // ctrl+N新建文件后默认的语言
“editor.formatOnType”: true, // 输入时就进行格式化,默认触发字符较少,分号可以触发
“editor.snippetSuggestions”: “top”, // snippets代码优先显示补全
"code-runner.runInTerminal": true, // 设置成false会在“输出”中输出,无法输入
"code-runner.executorMap": {
"c": "cd $dir && clang $fileName -o $fileNameWithoutExt.exe -Wall -g -Og -static-libgcc -fcolor-diagnostics --target=x86_64-w64-mingw -std=c11 && $dir$fileNameWithoutExt",
"cpp": "cd $dir && clang++ $fileName -o $fileNameWithoutExt.exe -Wall -g -Og -static-libgcc -fcolor-diagnostics --target=x86_64-w64-mingw -std=c++17 && $dir$fileNameWithoutExt"
}, // 设置code runner的命令行
"code-runner.saveFileBeforeRun": true, // run code前保存
"code-runner.preserveFocus": true, // 若为false,run code后光标会聚焦到终端上。如果需要频繁输入数据可设为false
"code-runner.clearPreviousOutput": false, // 每次run code前清空属于code runner的终端消息
"C_Cpp.clang_format_sortIncludes": true, // 格式化时调整include的顺序(按字母排序)
"C_Cpp.intelliSenseEngine": "Default", // 可以为Default或Tag Parser,后者较老,功能较简单。具体差别参考cpptools扩展文档
"C_Cpp.errorSquiggles": "Disabled", // 因为有clang的lint,所以关掉
"C_Cpp.autocomplete": "Disabled", // 因为有clang的补全,所以关掉
"clang.cflags": [ // 控制c语言静态检测的参数
"--target=x86_64-w64-mingw",
"-std=c11",
"-Wall"
],
"clang.cxxflags": [ // 控制c++静态检测时的参数
"--target=x86_64-w64-mingw",
"-std=c++17",
"-Wall"
],
"clang.completion.enable":true // 效果效果比cpptools要好
}
运行代码时右上角已经有了我们的插件给我们带来的小三角。点击即可
例如
注意如果提示include按更新为includepath,解决方案如下,在VScode里键盘按下“Shift+Ctrl+p” 输入: C++Configurations,选择UI界面,如图所示:
右下角接近任务栏的地方,会提示需要打开文件夹,此时自己打开一个文件夹(注:在此之前无打开的文件夹)
之后的文件夹里会自动生成“.vscode”,如下图左边红框:
将包含路径改为mingw里bin文件里include的路径即可。
参考文献:1.https://blog.csdn.net/tang_yating_/article/details/107366004
2.https://blog.csdn.net/u013163834/article/details/85213443?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161163267616780264047352%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=161163267616780264047352&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-1-85213443.pc_search_result_cache&utm_term=vscode%E6%80%8E%E4%B9%88%E8%BF%90%E8%A1%8C%E4%BB%A3%E7%A0%81C%E8%AF%AD%E8%A8%80
3.https://blog.csdn.net/lyw851230/article/details/89352839?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161163375016780264033984%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=161163375016780264033984&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-2-89352839.pc_search_result_cache&utm_term=vscode%E6%80%8E%E4%B9%88%E8%BF%90%E8%A1%8C%E4%BB%A3%E7%A0%81
感谢以上博客主人
的内容,最后两条文献即是两位大佬的博客,再次感谢。