关于vscode编译c/c++ 使用c++11的一个解决办法,针对c和c++混编出现的问题的解决方法 [-fpermissive]出现后如何解决
1. vscode配置c或者c++编译开发环境,一般情况下足够了,大概教程网上有很多,但是都只言片语,留一手.我在采坑无数次之后总结了一些经验如下
vscode编译有两种形式,一种是右键,这种形式,使用默认setting,都不知道在哪里配置的,可控性贼差,并且有一点必须注意,vscode默认只会编译一个文件,这一点贼坑(哪个写c++的只写一个main文件)
另一种编译方式是类似于命令行形式,不同的是,得需要自己写一些文件配置啥的,但是有一点好处是可控,如下
2. c与c++混编,可能会出现指针强制转化,编译通不过的问题, 网上有说我以上遇到的问题解决方案是加上 CXXFLAGS=-fpermissive
但是加在哪里也没说,按照这个方向查找也没具体些的信息,不过我猜测应该是cmake中的内容,
因此在遇到c和c++混编的情况下,我还是建议,尽可能的使用专业的ide,比如virsual studio 2019或者qt,或者clion(我个人推荐clion)
clion安装 https://www.jianshu.com/p/1aa989808e15
3. 记录下正常情况下vscode配置c++环境的几个文件和步骤
1 在项目根目录下创建.vscode文件,并创建两个文件夹,一个用来debug,一个用来执行指令
launch.json
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示 "type": "cppdbg", // 配置类型,这里只能为cppdbg "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加) "program": "${fileDirname}/${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径 "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可 "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false "cwd": "${workspaceRoot}",// 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录 "environment": [], "externalConsole": true,// 调试时是否显示控制台窗口,一般设置为true显示控制台 "MIMode": "gdb", "miDebuggerPath": "E:\\c-c++\\TDM-GCC-64\\bin\\gdb64.exe",// miDebugger的路径,注意这里要与MinGw的路径对应 "preLaunchTask": "g++", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
tasks.json
{ "version": "2.0.0", "tasks": [{ "label": "g++", "command": "g++", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}.exe" ], "problemMatcher": { "owner": "cpp", "fileLocation": [ "relative", "${workspaceRoot}" ], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } }, "group": { "kind": "build", "isDefault": true } } ] }
2 记得添加环境变量
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?