当前位置: 首页 > news >正文

VScode分文件编写C++报错 | 如何进行VScode分文件编写C++ | 不懂也能轻松解决版

分文件编写遇到的问题

分文件编写例子如下所示:
在这里插入图片描述
但是直接使用 Run Code 或者 调试C/C++文件 会报错如下:

  • 正在执行任务: C/C++: g++.exe 生成活动文件
    正在启动生成…
    cmd /c chcp 65001>nul && D:\Librarys\mingw64\bin\g++.exe -fdiagnostics-color=always -g “E:\VSCode Projects\main.cpp” -o “E:\VSCode Projects\main.exe”
    D:/Librarys/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/13.1.0/…/…/…/…/x86_64-w64-mingw32/bin/ld.exe: C:\Users\beyou\AppData\Local\Temp\cc05WNEh.o: in function main': E:/VSCode Projects/main.cpp:9: undefined reference toswap(int, int)’
    collect2.exe: error: ld returned 1 exit status
    生成已完成,但出现错误
    终端进程已终止,退出代码: -1。
    终端将被任务重用,按任意键关闭。

解决办法

vscode 的 .vscode 的配置遵循父类文件夹优先的原则,也就是说父文件夹的 .vscode 和子文件夹的 .vscode ,优先访问父文件夹

最原始的 tasks.json 内容为这样,它只适合于单文件生成,也就是你把所有的代码写在一个 .cpp 文件里面。如果你在你的项目文件夹下新建子文件夹,再把你的代码文件移动到子文件夹下,对于你这种单文件而言,下面的内容仍然不用改变。也能正常编译运行。(因为 fileDirname 就是装你的代码文件所在的位置)

            "args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],

对于分文件编写的程序,需要改 tasks.json 里面的东西为下面的样子,同理,这样已经是正确的了,即使你递归地建了100个子文件夹把程序放在里面,下面的路径也不需要从根文件夹 \\ 到 100 个子文件夹后的位置。也就是说,只要是分文件编写的项目,按下面这样写就行了。(因为 fileDirname 就是装你的代码文件所在的位置)

            "args": ["-fdiagnostics-color=always","-g","${fileDirname}\\*.cpp","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],

之后使用 调试C/C++文件运行C/C++文件 都没有问题,但是 Run Code 会报错,别管 Run Code ,这个修改很复杂,而且违背初心了,原因如下:

大型项目使用 调试C/C++文件,不要选择 Run Code,因为 Run Code 是一个快捷工具,主要由 Code Runner 插件提供。它执行一个预定义的命令,通常是针对单个文件进行快速编译和运行。调试C/C++文件 运行的是 VSCode 的 任务构建系统,这需要通过 tasks.json 文件进行配置。所以我们可以在里面灵活地修改。

其实最好还是了解 c++ 编译过程,会对上面为什么这样写有更深的感悟,但是小白可能只想着快点解决错误。


特别鸣谢:bmg的远程操作与指导
特别批评:QuantumDusk的不作为

http://www.lryc.cn/news/468259.html

相关文章:

  • 洞察前沿趋势!2024深圳国际金融科技大赛——西丽湖金融科技大学生挑战赛技术公开课指南
  • Unity3D学习FPS游戏(4)重力模拟和角色跳跃
  • C#基础知识-枚举
  • 系统架构设计师教程 第2章 2.1-2计算机系统及硬件 笔记
  • 通过使用Visual Studio将你的程序一键发布到Docker
  • vue2和vue3动态引入路由,权限控制
  • Spring Boot:植物健康的智能守护者
  • 红黑树 学习笔记
  • linux更改系统时间
  • B站C#刘铁猛笔记
  • 如何使用信号发生器产生正弦波并用数字示波器进行测量
  • XJ04、消费金融|授信基本概念及其流程设计
  • 儿童预防接种预约微信小程序springboot+论文源码调试讲解
  • nginx 修改配置
  • 孤岛架构在安全性方面
  • COSCon'24 志愿者招募令:共创开源新生活!
  • vscode使用make编译c的问题
  • 管家婆财贸ERP BB019.操作员制单日期控制
  • 从 Vue 2 到 Vue 3:全面升级指南
  • Apache paimon表操作实战-5
  • 阿里云用STS上传oss的完整程序执行流程图 和前端需要哪些参数uniapp
  • 决策树方法根据指定条件筛选方案
  • 多特征变量序列预测(四) Transformer-BiLSTM风速预测模型
  • 【开源免费】基于SpringBoot+Vue.JS蜗牛兼职平台 (JAVA毕业设计)
  • Ajax笔记
  • 软考:缓存分片和一致性哈希
  • 3109 体验积分值
  • 初识jsp
  • Ansible 的脚本 --- playbooks剧本
  • Windows 死机时 系统错误日志分析与故障排除