Windows下使用VS Code编译运行、调试C/C++

  • 自己查了好多东西,好像弄懂了一丢丢,整理一下,有什么错误不足之处,还望大神不吝赐教……
  • VS Code是一款稍有研究就会为之惊叹的软件,VS Code支持类似于VS的断点调试C/C++,也可以直接编译运行C/C++

一、编译运行C/C++的方法

  1. 微软官方起初设定的科学做法(这也是现在的科学做法)是通过在VS Code集成控制台写命令行的方式来实现编译运行程序的,但也可以通过Code Runner插件来简化步骤,实现一键编译执行。

  2. 但无论是什么方法,因为VS Code本身并不带有编译器,都需要自己提前安装好一个C/C++编译器(如MinGw,Clang)并且配置好环境变量。
    —>不会请点击这里<—

1、控制台下编译运行C/C++

  1. 按 ctrl + ~ 打开VS Code控制台,点击终端,在VS Code的终端下操作其实就是在Windows下的cmd或者powershell下操作,一切的编译运行等操作可以用输入命令行的方式来实现,只要掌握各自的编译器的命令行指令就能让程序在VS Code界面上运行起来。

  2. C/C++编译器的那一套自然不在话下(如下图),先用 cd 命令切换到源文件目录或者直接输入完整路径名,然后用编译器指令(假设编译器是mingw) g++ xxx.cpp -o xxx.exe编译,接着再输入./xxx.exe就可以运行编译好的程序。

其他的C/C++编译器,如Clang,包括其他语言(Python、Go、Java…)都可以类似的这样操作。
在这里插入图片描述
在这里插入图片描述

2、便捷方式是使用Code Runner插件

  1. Code Runner插件默认的C/C++编译器是gcc/g++,需要提前安装好并且设置好环境变量,通常选择MinGw或者MinGw-w64,MinGw和MinGw-w64是有区别的,直观的说,MinGw-w64更加强大,建议选MinGw-w64。
    —>同上,不会请点击这里<—

  2. 同时,Code Runner插件使用的编译器是可以被修改为gcc/g++以外的编译器的(比如Clang、MSVC),有这方面需要的请看:VS Code修改Code Runner使用的编译器VS Code修改Code Runner插件默认使用的编译器

  3. 第一步完成后,即安装好并且设置好MinGw-w64后,接着点击VS Code左侧面板中的插件商店按钮,安装好下面插件:
    C/C++
    Chinese(Simplified) (如有需要安装)
    Code Runner
    在这里插入图片描述注意,如果没安装Clang的话,不要安装推荐插件里的C/C++ Clang插件,否则应该会报错。

  4. 安装好后重启一下VS Code这样就能在右上角看见一个三角形了,打开文件点击就能编译执行
    在这里插入图片描述

但此时会有这样一个问题,如果程序里有scanf()等请求键盘输入数据的函数,此时无法从键盘输入数据,并且程序无法结束需要关闭重启VS Code才能重新执行。

解决办法是依次打开:文件>首选项>设置>用户设置>拓展>Run Code Configuration

找到 Run In Terminal 打上勾,这样运行的程序就会运行在VS Code的集成控制台上

在工作区设置也有这个选项,但工作区设置只会对工作区生效

这样问题就能解决了
在这里插入图片描述

运行一段测试代码:

#include<bits/stdc++.h>  
using namespace std;  
  
int main(){  
    cout<<"hello"<<endl;  
    int u;  
    while(cin>>u){  
        cout<<u*u<<endl;  
    }  
}

这时输出信息会显示在终端栏下面,随便输入测试数据,可以看到下图的效果:
在这里插入图片描述
点击右上角的垃圾桶能提前结束程序运行。

—>VS Code支持实时报错,找不到头文件时,请点击此处<—

Code Runner插件有一个局限,Code Runner插件的原理其实是自动在控制台下帮助我们输入g++ xxx.cpp -o xxx.exe(假设是默认情况)这条编译指令,不会再添加额外的命令。比如,如果代码中使用了winsock2,用g++编译的话需要额外添加-lwsock32指令,即完整指令为g++ xxx.cpp -o xxx.exe -lwsock32,此时直接使用Code Runner的话会无法编译,这种情况应该使用上面提到的VS Code集成控制台手动输入编译指令进行编译。

猜你喜欢

转载自blog.csdn.net/qq_42815188/article/details/86557585