使用WSL+VSCode快速C++入门

使用WSL+VSCode快速C++入门


0. 准备工作

0) 系统要求 Windows 10 1803以上

1) 安装WSL(Windows Subsystem Linux)

  • 按下Win + X, 在弹出的菜单中选择应用和功能
  • 在弹出的窗口中的右侧找到相关设置,点击 “程序和功能”
  • 点击新的弹窗左侧 “启用或关闭Windows功能”
  • 勾选 “适用于Windows的Linux子系统”, 点击确定等待安装功能
  • 打开应用商店, 搜索Ubuntu, 找到Ubuntu 16.04 (或者更新) 点击安装, 安装完成后根据提示可以固定到开始菜单(方便后续使用), 然后重启系统
  • 重启系统后, 打开Ubuntu应用, 等待安装完成, 中途会提示输入要设置的子系统用户名和密码, 根据个人喜好设置就行

2) 安装VSCode

  • 进入官网下载VSCode的安装程序进行安装即可 点击下载

3) 将VSCode默认的终端配置为WSL的bash终端

  • 打开VSCode
  • 依次点击菜单项 “文件” - “首选项” - “设置”, 打开用户设置文件
  • 在右侧的用户设置(settings.json)中添加下面配置
{
   
    "terminal.external.windowsExec": "C:\\WINDOWS\\System32\\bash.exe",
    "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\bash.exe"
}

4) 在终端中安装构建工具

  • 重启VSCode后, 打开终端 (快捷键 Ctrl + Shift + `)
  • 运行下面的终端命令安装C++的编译构建工具
$ sudo apt install build-essential vim git cmake make
  • 安装完成后关闭终端, 创建或打开一个工作目录, 再次打开终端(此时终端会自动定位到工作目录)

至此我们的准备工作才算完成了

1. 第一个源文件

1) 基本代码

  • 我们新建一个源文件 main.cc (后缀名可以是 *.cc *.cxx *.cpp)
  • 接着我们输入一些基础代码来编译生成一个可执行文件

int main(int, char **)
{
   
    return 0;
}

  • 打开终端工具, 输入下面的命令编译生成一个可执行程序
$ g++ main.cc
  • 执行生成的可执行文件a.out
$ ./a.out
  • 使用自定义的可执行文件名称重新编译
$ g++ main.cc -o main # 使用-o 选项指定成的可执行文件名, 这里用的是main
  • 执行自定义名称的可执行
$ ./main

以上的终端命令一般情况下都是没有任何输出打印的内容的,如果打印了一些报错信息, 请检查main.cc中的代码是否有拼写错误以及中英文符号错误

如果我们希望在代码中加入一些打印文本的代码, 下一步该怎么做呢?

别急, 慢慢来

2) 第一行代码 Hello, C++

两种方案:

  • 面向过程
  • 面向对象

面向过程:

  • 我们需要一个面向过程的方法(函数)来打印我们的文本, 是哪个函数呢?
    最常用的当然是 printf()函数了, 赶紧写上:

int main(int, char**)
{
   
    printf("Hello, C++");
    return 0;
}

赶紧编译试试? 不好, 报错了,提示找不到printf的声明…尴尬!!!

  • 怎么才能使用这个函数呢?

    自己声明一个或者…引入现成的呗

    怎么引入呢?

    在文件的上面加一句文件包含就好啦 #include <文件名> 或者 #include “文件名”

    要引入哪个头文件啊?

    printf函数是标准C库里的函数呀, 当然得包含标准C库头文件了 #include

赶紧试试

#include <cstdio>

int main(int, char**)
{
   
    printf("Hello, C++");
    return 0;
}

编译,执行, 一气呵成, 哇, 有输出了啊

面向对象:

  • 如果把标准输出当成一个对象的话,是哪个对象呢?

标准输出有两个, 一个是正常输出, 一个是错误输出, 分别对应

std::cout 和std::cerr

  • 怎么使用这个对象呢?

包含头文件

#include <iostream>

引入命名空间std, 然后使用

using namespace std;

当然也可以不在全局引入命名空间std

虽然你可以使用using的方式引入整个命名空间, 但是个人建议最好别这么干?

为什么呢?

你想啊, 要是你写了一个跟标准库里面你还没用过的同样名字的函数, 你该怎么使用?

你要真想偷点懒啊, 你改成

// using namespace std; 
using std::cout;

这样你就之引入了std::cout这一个对象了, 其他的就不收受影响了

我建议啊, 你最好直接使用 std::cout, 虽然多写了一些代码, 但是这样写好处更多啊, 比如不用担心自己写的函数和标准库同名, 多个命名空间都在使用时, 可以很清楚的知道使用的时哪个命名空间里的了

那试试:

#include <iostream>

int main(int, char **)
{
   
    std::cout << "Hello, C++" << std::endl;
    return 0;
}
  • std::endl是什么呀?

和std::cout一样, 标准库中的一个对象, 区别是功能不一样

什么功能呀?

换行 + 刷新缓冲区, 相当于 \n + std::flush

std::flush是啥?

也是一个对象啊, 用来刷新缓冲区

  • 编译运行看看
$ g++ main.cc -o main
$ ./main
Hello, C++

哈哈,终于有自己写的输出文本了

3) 我要开始做加减乘除啦

  • 做加法
#include <iostream>

int main(int, char**)
{
   
    int sum = 1 + 2;
    std::cout <
  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值