竞赛环境以及常用编辑器设置

鉴于每年新大一都要问相关编辑器的安装设置,这里写个小博客汇总一下相关软件的安装以及相关配置。

建议之前没接触过编程的同学们优先下载一个Dev,里面附带最近版本的GCC,省去了以后大家去折腾下载GCC的时间,毕竟国内去下载有时候还是太太太太慢了。

目前就只推荐vscode和Dev两款编译器,不需要额外学习Cmake的知识点。

sublime text3/4可以在熟练两款编辑器的配置后,自行学习,难度不大。

Clion继承了JB家的传统,有多少内存吃多少内存,但是功能和体验很好。

codeblock也不错,但是个人觉得有点麻烦,调试功能对新手不大友好。

编译代码

竞赛环境

评测机的系统环境是Ubuntu,而我们写代码的环境是Win,Win对代码错误的检查并不是太严格。

那么我们代码如果存在一个隐性的BUG或者写了个UB行为的时候,就会得到本地和评测机给出两种不同的处理结果。

以下给出两种可能出现的错误。

内存越界

Win下内存越界,在本地运行时并不影响最终答案,但是当你交到评测机上运行时,这个越界的地址可能就是你某个变量的地址,这样就会导致你某个变量被修改。(惨痛经历)

而Ubuntu下会给你一个大大的报错。

好像某些平台对于越界处理,都是越到某个变量上去。

变量初始化

Win下变量初始化默认为0(试了试Dev和Vscode),所以有时候忘记初始化的时候,本地运行也不影响答案,但是当你交上去评测机的时候,这个这个初始化就会变成一个奇怪的数值,然后给你一个大大的WA(惨痛经历,WA了一上午)。

基础用法

g++ yourCode.cpp

会得到一个可执行文件,名字是 a.out,之后输入./文件名,运行程序 (前提是Linux系统环境)

在Win下会得到一个a.exe文件,之后直接输入a.exe即可运行程序。

常用指令参数

  • -o 指定造出来的可执行文件的文件名
  • -lm 连接math库
  • -O2 打开O2优化(俗称吸氧,可以让STL更快)
  • -stdc=c++xx 设置编译标准

例如 : g++ -std=c++11 yourCode.cpp -o yourCode -O2

所以,我们只需要安装好编译环境,用txt都可以写代码。

而且可以通过-std=c++xx设置编译标准,那么我们就可以通过考场环境来设置我们的指令参数。

例如蓝桥杯支持C++11(???),那么我们就将编译器里的编译命令里加上一句-std=c++11,或者直接修改选择的编译标准位c++11。

Win下推荐终端

Windows Terminal,下载后可以使用Linux的命令,会变成对应Win下的命令。

比小黑框好用太多,就是弹出来会慢一丢丢。

小熊猫Dev

这里直接贴一个下载地址:https://royqh1979.gitee.io/redpandacpp/

下载选择64位带GCC的版本,解压(安装)完成后点击打开,选择主题后得到以下窗口。

请点击箭头指向的地方,将MinGw GCC 11.2.0 64-bit Debug改成如图所示。

image-20220403204430945

建议同学们关闭Dev的代码补全功能

算法练习中需要用到的头文件和函数并不多,不建议依赖代码补全来记住常用头文件名和函数名。

也建议把即时报错去掉,提高准确性。

点击工具,打开选项。

image-20220403204903715

再点击代码补全部分

image-20220403204940971

把这个启动代码补全勾勾去掉即可

image-20220403205006895

至于其他功能的话,官网文档有完善的使用说明,同学们需要可以自行阅读文档进行了解学习。

Vscode

官网下载地址:https://code.visualstudio.com/

点击右上角的Download

image-20220403205658643

框起来的地方,下载64位版本。

image-20220403205801292

如果懂得FQ的同学可以FQ下载,速度会快很多。

在下载等待时间段,我们可以先弄一下系统环境的设置。

先打开Dev的安装目录,找到MinGw64并双击进入。

找到bin这个文件夹,双击进入后,复制它的路径。不懂怎么得到路径的同学就单击我框起来的地方然后复制即可。

建议大家复制一份这个MinGw64文件夹,在C盘创建一个专门存放各种语言环境的文件夹,进行统一管理。

image-20220403205924243 image-20220403211144633

题外话:点击bin里面会有很多.exe文件,这就是我们写完代码要运行时所需要的文件,gcc对应C语言,g++对应C++语言,gdb是用来调试的工具。

我们需要让我们写的程序能用上这些编译程序,所以我们需要把它放到我们的环境变量中。右键我的电脑,点击属性。

图示用的是win11系统,win10系统打开后和图示不同。查找环境变量可以用两种办法。如图示箭头。

  • 系统设置里查找环境变量
  • 点击高级系统设置,点击高级,再点击环境变量。
image-20220403211807973 image-20220403211938623

打开后在系统变量里找到Path,双击进入。

image-20220403212116575

然后我们以此点击新建,在编辑框里粘贴我们之前复制好的bin目录路径,得到图示效果。

image-20220403212242534

之后我们同时按下win+r,在左下角弹出来的小窗里输入cmd,回车进入。

输入gcc -v能得到版本信息,g++ -v能得到版本信息,那么环境变量就配置成功了。

image-20220403212443145

弄好之后我们的vscode也应该下载好了,进行安装,一直下一步到如下页面。

其他里的1,2选项勾选后,右键里就多出一个使用vscode打开选项,勾不勾看个人。

是否创建桌面快捷方式也看个人。其他的默认即可。

image-20220403212635906

安装完成后打开,得到一个全英文界面。

我们首先选择中文包,点击右下角的齿轮,在列表里选择Extensions(扩展)。

image-20220403213354563

搜索Chinese,第一个简体中文就是我们要下载的中文语言包,安装完成后右下角会弹窗是否重启,选择是即可。

再安装C语言的扩展,C/C++

image-20220403213621607 image-20220403213824477

之后我们在电脑随便找个地方新建文件夹,用来存放以后我们写的代码,创建完成后返回vscode页面,点击左上角的文件,然后打开我们刚刚所创建的文件夹,创建.vscode子文件夹。

如图示,创建.vscode后建立圈起来的四个文件,

image-20220403230213446

然后将以下内容复制进去。

launch.json文件

command里的路径改成自己的安防MinGw64的路径。

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "C:\\Program Files\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "-DLOCAL"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

setting.json文件

{
    "C_Cpp.errorSquiggles": "Disabled",
    "files.associations": {
        "iostream": "cpp",
        "*.tcc": "cpp",
        "forward_list": "cpp",
        "list": "cpp",
        "regex": "cpp",
        "array": "cpp",
        "atomic": "cpp",
        "bitset": "cpp",
        "cctype": "cpp",
        "cfenv": "cpp",
        "charconv": "cpp",
        "chrono": "cpp",
        "cinttypes": "cpp",
        "clocale": "cpp",
        "cmath": "cpp",
        "codecvt": "cpp",
        "complex": "cpp",
        "condition_variable": "cpp",
        "csetjmp": "cpp",
        "csignal": "cpp",
        "cstdarg": "cpp",
        "cstddef": "cpp",
        "cstdint": "cpp",
        "cstdio": "cpp",
        "cstdlib": "cpp",
        "cstring": "cpp",
        "ctime": "cpp",
        "cuchar": "cpp",
        "cwchar": "cpp",
        "cwctype": "cpp",
        "deque": "cpp",
        "unordered_map": "cpp",
        "unordered_set": "cpp",
        "vector": "cpp",
        "exception": "cpp",
        "algorithm": "cpp",
        "functional": "cpp",
        "iterator": "cpp",
        "map": "cpp",
        "memory": "cpp",
        "memory_resource": "cpp",
        "numeric": "cpp",
        "optional": "cpp",
        "random": "cpp",
        "ratio": "cpp",
        "set": "cpp",
        "string": "cpp",
        "string_view": "cpp",
        "system_error": "cpp",
        "tuple": "cpp",
        "type_traits": "cpp",
        "utility": "cpp",
        "fstream": "cpp",
        "future": "cpp",
        "initializer_list": "cpp",
        "iomanip": "cpp",
        "iosfwd": "cpp",
        "istream": "cpp",
        "limits": "cpp",
        "mutex": "cpp",
        "new": "cpp",
        "ostream": "cpp",
        "scoped_allocator": "cpp",
        "shared_mutex": "cpp",
        "sstream": "cpp",
        "stdexcept": "cpp",
        "streambuf": "cpp",
        "thread": "cpp",
        "typeindex": "cpp",
        "typeinfo": "cpp",
        "valarray": "cpp",
        "span": "cpp"
    }
}

tasks.json

command的路径记得修改。

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "C:\\Program Files\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "-DLOCAL"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

c_cpp_properties.json

C++的版本选择可以看个人选择降低,但建议在11以上。

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE",
                "LOCAL"
            ],
            "compilerPath": "C:\\Program Files\\mingw64\\bin\\gcc.exe",
            "cStandard": "gnu17",
            "cppStandard": "gnu++20",
            "intelliSenseMode": "windows-gcc-x64"
        }
    ],
    "version": 4
}

之后就可以愉快的敲代码了,敲完代码后按ctrl + shift + b编译,会产生一个.exe文件,在按ctrl+~调出终端,输入./文件名,即可运行文件。(如果终端是CMD,那就是直接输入文件名,即可运行文件)。

虽然很麻烦,但是希望同学们可以习惯这样的运行方式,如果实在不习惯,可以安装相应的一键运行插件,百度有很多,这里不给出。

posted @   古雨梨花  阅读(334)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示