OttoLi 的胡言乱语

  • 账户
    • 登录
    • 注册
    • 个人中心
head

用 VS Code 配置 C/C++ 开发环境

2020年2月28日 5038点热度 2人点赞 0条评论

本篇文章参考 知乎@谭九鼎的回答

最近开始学 C 语言了,老师推荐使用 Dev C++,但它东西太古老而丑陋了。于是安装了 Visual Studio,但是太大材小用了,就算只写个 Hello World 还要创建新项目,也很麻烦。于是我又寻觅其它的替代品,直到找到了 VS Code……

Visual Studio Code 是微软开发的针对于编写现代 Web 和云应用的跨平台源代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,设计得很人性化

Visual Studio Code 的安装

Visual Studio Code 是免费的,在官网下载最新版本就行了:https://code.visualstudio.com/

安装过后面临的第一个的问题就是——软件是英文的。对于英语菜得抠脚的我来说,这很致命。但是好在vscode 有着丰富的插件库,可以通过插件配置软件语言。

点击左侧“扩展”一栏,搜索 Chinese,安装第一个插件 Chinese (Simplified) Language Pack for Visual Studio Code 就可以了。

环境准备

VS Code 不是 IDE,是不内置编译器的,因此需要下载安装:

  1. Clang:选择 Pre-Built Binaries 中的 Windows (64-bit) 下载安装时添加环境变量时选择 Add LLVM to the system PATH for all users。安装路径推荐填 C:\Program Files\LLVM,等会就可以照搬我的 c_cpp_properties.json 文件。
  2. MinGW-w64:直接点 Download 就行,安装时 Architecture 选 x86_64,其余默认即可。
注意!

安装完成之后,打开 MinGW 的安装目录(看得到bin文件夹那一层),把全部文件复制到 Clang 安装目录(同样是看得到 bin 文件夹那一层)下,应该可以无冲突合并。合并之后就可以把MinGW卸载了。

如果没有进行这一步,c_cpp_properties.json 配置里路径就自己改,还要手动把 MinGW 的 bin 文件夹加到系统环境变量中,因为 MinGW 不会自己加。 既要装 Clang 又要装 MinGW,是因为 Clang 没有头文件。

配置完成后在 cmd 中输入 clang 并执行,如果提示 no input files ,则证明配置成功。

vscode 的配置

1.插件安装

  • 必装插件
    • C/C++
    • C/C++ Clang Command Adapter
    • Code Runner
  • 推荐插件
    • Bracket Pair Colorizer
    • Include Autocomplete
    • One Dark Pro
    • Material Icon Theme

2.配置工作区

在磁盘中创建一个打算存放代码的文件夹,注意路径中不能含有中文、空格和引号。把这个文件夹叫做工作目录。在文件夹中创建子文件夹 .vscode,注意前面有个点。Windows 10 1903版本后允许创建,如果你的系统没有及时更新,可以在vscode中创建

打开 VS Code,选择“打开文件夹”,打开刚刚创建的文件夹(.vscode 的父文件夹)。然后在 .vscode 中创建四个文件:launch.json、tasks.json、settings.json、c_cpp_properties.json。

将下面的内容复制进去:

  • launch.json
  • tasks.json
  • settings.json
  • c_cpp_properties.json
// https://github.com/Microsoft/vscode-cpptools/blob/master/launch.md
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cppdbg", // 配置类型,这里只能为cppdbg
            "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
            "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
            "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,我一般设置为true
            "cwd": "${workspaceFolder}", // 调试程序时的工作目录
            "environment": [], // (环境变量?)
            "externalConsole": false, // 调试时是否显示控制台窗口,一般设置为true显示控制台
            "internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
            "MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但目前lldb在windows下没有预编译好的版本。
            "miDebuggerPath": "gdb.exe", // 调试器路径。
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ],
            "preLaunchTask": "Compile" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
        }
    ]
}
// https://code.visualstudio.com/docs/editor/tasks
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Compile", // 任务名称,与launch.json的preLaunchTask相对应
            "command": "clang++", // 要使用的编译器
            "args": [
                "${file}",
                "-o", // 指定输出文件名,不加该参数则默认输出a.exe
                "${fileDirname}/${fileBasenameNoExtension}.exe",
                "-g", // 生成和调试有关的信息
                "-Wall", // 开启额外警告
                "-static-libgcc", // 静态链接
                "-fcolor-diagnostics",
                "--target=x86_64-w64-mingw", // 默认target为msvc,不加这一条就会找不到头文件
                "-std=c++17" // C语言最新标准为c11,或根据自己的需要进行修改
            ], // 编译命令参数
            "type": "shell",
            "group": {
                "kind": "build",
                "isDefault": true // 设为false可做到一个tasks.json配置多个编译指令,需要自己修改本文件,我这里不多提
            },
            "presentation": {
                "echo": true,
                "reveal": "always", // 在“终端”中显示编译信息的策略,可以为always,silent,never。具体参见VSC的文档
                "focus": false, // 设为true后可以使执行task时焦点聚集在终端,但对编译c和c++来说,设为true没有意义
                "panel": "shared" // 不同的文件的编译信息共享一个终端面板
            }
            // "problemMatcher":"$gcc" // 如果你不使用clang,去掉前面的注释符,并在上一条之后加个逗号。照着我的教程做的不需要改(也可以把这行删去)
        }
    ]
}
{
    "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要好
}
{
    "configurations": [
        {
            "name": "MinGW",
            "intelliSenseMode": "clang-x64",
            "compilerPath": "C:/Program Files/LLVM/bin/gcc.exe",
            "includePath": [
                "${workspaceFolder}"
            ],
            "defines": [],
            "browse": {
                "path": [
                    "${workspaceFolder}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            },
            "cStandard": "c11",
            "cppStandard": "c++17"
        }
    ],
    "version": 4
}

关于中文

VS Code 默认使用的是 utf-8 编码,cmd/powershell 是 gbk 编码,所以直接输出时中文会乱码,解决方法是:

打开 设置 - 用户(或工作区) - 文本编辑器 - 文件 - Encoding ,设置为gb2312

使用方法

至此 Visual Studio Code 配置的 C/C++ 开发环境就配置完毕了,有几点注意事项:

一、在进行 C/C++ 程序开发时,要保证程序文件在工作目录下!

二、编译运行或调试时,点击右上角三角形按钮即可进行。编译生成的可执行文件会生成在工作目录中

三、程序的输入和输出在编辑框下方的 终端 窗口中

本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可
标签: C语言 vscode
最后更新:2020年3月1日

OttoLi

涧户寂无人,纷纷开且落
——辛夷坞

打赏 点赞
下一篇 >

文章评论

您需要 登录 之后才可以评论

OttoLi

涧户寂无人,纷纷开且落
——辛夷坞

最新 热点 随机
最新 热点 随机
精粤 h610i 主板 BIOS 启动画面 logo 修改自定义 Office/Visio/Project 安装与激活教程 - 适用于各种版本/正版/非正版 CentOS 安装运行 Hentai@Home 教程 自搭建全平台私有密码库 bitwarden & Vaultwarden 如何在不移动本地文件的情况下用 OneDrive 客户端将文件上传至 OneDrive —— 利用 mklink 软链接上传文件 Linux 如何使用密钥对连接 SSH 并关闭密码连接
[下载]那些超级有用的美术技法教程书[资源]攻壳机动队系列蓝光收藏指南Netch-可替代 SSTap 的开源游戏加速器2021 甲骨文云 Oracle Always Free 永久免费 VPS 服务器 | 介绍/注册/申请/部署/连接/注意事项APlayer & MetingJS 音乐播放器使用指南WordPress 建站日志
阿里云同账号迁移服务器教程 KMS 服务器的搭建及使用 WordPress 整站迁移记录 精粤 h610i 主板 BIOS 启动画面 logo 修改自定义 Linux 中文语言环境设置 + 时区更改 已测试 CentOS Ubuntu 自搭建全平台私有密码库 bitwarden & Vaultwarden
标签聚合
CentOS 免费 Ubuntu 甲骨文 教程 ssr VPS ssh 动漫 oracle 白嫖 日期与时间 游戏 Windows 建站 Wordpress Linux 资源 Office 绘画
关于本站

Otto 不知道该说些什么,于是写了这么一行字……

目录 隐藏
1. Visual Studio Code 的安装
2. 环境准备
3. vscode 的配置
3.1. 1.插件安装
3.2. 2.配置工作区
4. 关于中文
5. 使用方法

COPYRIGHT © 2022 OttoLi. ALL RIGHTS RESERVED.SITEMAP

THEME KRATOS 豫ICP备20004659号 萌ICP备20210150号

腾讯云  LiteServer  Google Analytics  CloudFlare