「Code」C/CPP

「Code」C/CPP

也可点击知乎文章

提前劝退提示:如果你只需要学习 C/C++,推荐国内老师改进的Dev-C++ - 小熊猫C++
我可能会经常更新,改改错字或者变换一下句子的顺序,但是主体内容不会变。
最后一次大更新:2022.03.24

0. VS Code安装及使用

下文必看! 下载安装VS Code、基本使用等等

「Code」安装与基本操作

网上有很多配置方法(特别是C/C++),但是因为C/C++扩展在不停更新,很多已经过时了。特别是那些让你复制json,现在很多已经内置。
无论用VS Code搭建什么语言的开发环境,只需记住一个流程:安装SDK(编译器/解释器等等)->VS Code里安装相应的支持插件->开始开发。

现在简单使用不用手动配置 json 文件。多文件项目也不用建议用 json,建议直接用 make、cmake 等工具

1. C/C++编译器配置

上面也说了,VS Code只算是个编辑器,编译还是要靠专门的编译器的,Windows和Linux我们选择最常用的GNU编译套件 - GCC(其Windows的移植版有MinGW / MinGW-w64 / TDM-GCC);macOS上则是Clang,但是Clang也是以GCC作为别名。

GCC中c语言编译器是gcc,c++编译器是g++,调试器是gdb

1.1 Windows(安装版)- 推荐

下载:TDM-GCC - 联想软件商店 它不用你手动配置环境变量。

取消检查更新(因为太慢了),点击“Create”安装。

安装完毕后需关闭所有打开的终端(有的话)确保环境变量生效。

完成。

~ 1.2 Windows(便携版)- 不看都行

有些人看其他教程里会让你下载便携版本的编译器(就是一个压缩包),以MinGW-w64为例,那么使用时需要先将解压得到的“…\mingw64\bin”目录加入环境变量

这是官方给的下载链接MinGW-w64 - SourceForge。下载后将其解压到某个非中文目录(推荐C盘新建一个目录)。

Win10及以上版本在设置里搜素“环境变量”,点开会弹出一个“系统属性”,然后按照这个步骤选择解压后的“…/mingw64/bin”目录。

选好了依次点确定(确保配置期间没有打开的终端)。

打开终端输入gcc,如果提示你“gcc.exe: 致命错误:没有输入文件”,说明已经成功。

1.3 WSL或Linux

反正只要保证有gdb、gcc、g++就可以,在终端中分别输入gccg++gdb,查看是否安装,没有的话自己用包管理器安装一下。如果有需要可以自己在最后加上make。

这里以Ubuntu为例,我们使用apt安装编译器gcc和g++,另外系统可能自带 gdb,为了保险还是加上。

sudo apt install gcc g++ gdb

1.4 macOS

确保安装了 Clang:

您的 Mac 上可能已经安装了 Clang。 要验证它是否存在,请打开 macOS 终端窗口并输入以下命令:

clang --version

如果没有安装 Clang,输入以下命令安装命令行开发者工具:

xcode-select --install

2. 安装C/C++扩展

打开一个目录,新建一个文件保存为“xx.c”或“xx.cpp”。

打开后它会自动提示安装C/C++扩展。(最近发现它会安装一个合集,其实不写大项目的话只装“C/C++”就行)

然后可以写个C或C++的HelloWorld试试

// xx.c
#include <stdio.h>
int main() {
    printf("Hello World 哈哈\n");
    return 0;
}
// xx.cpp
#include <iostream>
int main() {
    std::cout << "Hello World 哈哈\n";
    return 0;
}

3. 通过“C/C++”运行、调试

注意!C/C++ 扩展有些问题

  • (Windows 上使用时)文件路径不要包含中文,否则 VS Code 不能正常启动调试器。
  • macOS 用户、Windows 上 GBK 编码项目运行要看3.3

3.1 运行、调试的快捷按钮

接下来的操作请确保你的C/C++扩展版本大于1.9,这时打开相应的文件后右上角就会有运行和调试按钮。
(第一个正式的版本是1.9.7,低于这个请看3.2小节)。

直接运行请点击“运行C/C++”按钮;需要调试请打断点并点击“调试C/C++”按钮。

然后自行选择编译器。编译器选择 gcc 的话只能调试 C,选 g++ 的话 C/C++ 都可以调试
选错了将.vscode目录删除即可重新选择。要注意的是,cpp不是c plus plus,而是预处理器,不要选。

~ 3.2 (旧版本)调试及无断点“运行”

必须打开一个文件夹。

自己提前按需要打断点,想直接运行就不打断点,再按F5就可以开始调试/运行了。第一次调试时依次选“C++ (GDB/LLDB)” - “gcc/g++”,会自动生成打开launch.json和调试面板,不用管它,切换到终端即可。

3.3 外部终端运行

适用人群:

  • macOS用户
  • Window 上运行“继承”过来的 GBK 编码的项目
  • 习惯运行在弹出式的外部终端,内置终端显示不正常

现在没有特别便捷的方式,只能改json让它在外部运行。
按下面操作,一键生成相应的调试配置,然后把框起来的“false”改成“true”就行。

外部终端的话需要在return 0; 前加上system("pause");,否则程序运行完会直接关闭。






下面的和终端中操作有关,是对新手来说稍微“高阶”的内容,可以留着等熟悉了当扩展看,现在不看也行。直接用GDB调试因为远不如上面通过VS code简单、直观,就不提了。

Windows 上因为编码原因极不推荐直接这么做。




~ 4. 直接运行单文件

~ 4.1 直接编译运行

其实我们学习时一般都是单文件程序,这时直接在终端中编译运行速度要比上面通过VS Code来调用 GDB 调试来运行快多了。而且Windows上没有了中文目录或文件名的限制(但还是不建议使用中文)。

手动编译运行的方式:

  • 切换到当前目录
  • 编译C: gcc <源文件>.c -o <输出的程序名>
  • 编译C++: g++ <源文件>.cpp -o <输出的程序名>
  • 运行编译完的程序: ./<程序名>

~ 4.2 Windows 上直接运行乱码问题

开始那篇文章说了,Windows中文版命令行编码为 GBK,直接编译可能会有乱码问题,解决方式一是将文件编码改为 GBK,具体方法请参考最开始的文章。

但除了微软自家的VS,VS Code 等现代编辑器或IDE默认都是 UTF-8,改成 GBK 用 VS Code 调试时也会有乱码。所以建议全部新建 UTF-8。自己手动编译时在最后添加 -fexec-charset=gbk参数。这个参数的意思是让多字节字符串常量保存为指定编码(这里是gbk)。这样源文件编码是utf-8,也能正常的直接运行。

也可以看 3.3 节

有些麻烦是吧,都是Windows中文版的祸。

~ 4.3 (存档,极不推荐)Code Runner

为什么不推荐,有很多原因。

  • 无法调试;
  • 默认不是终端内打开,也不会运行时保存;
  • 运行程序名没有后缀,如Windows上用它运行xyz.a.c会出错 ;
  • 不能方便地自定义编译语句(GUI形式),自己改setting.json还不如官方扩展;
  • 现在官方的扩展也添加了类似按钮,更用不上了。

如果非要用

  • 建议设置中打开“Run in Terminal”,否则默认只有输出,而且可能出现奇怪的问题。
  • 另外建议将它的“Save File Before Run”也打开。又不然可能你调试时发现程序和你写的不一样,然后改了半天发现它没保存。