VSCode使用过程中遇到的一些坑

最近在使用VSCode编译C++,其中遇到了一些坑,便在此做一些解决的记录。我使用的编译器是MinGw。

坑1:按下F5运行时提示如下:

文字版提示为:

Unable to start debugging. Program path '***.exe' ismissing or invalid.
GDB failed with message: "***.exe": not inexecutable format: File format not recognized
This may occur if the process's executable was changed after the process wasstarted, such as when installing an update. Try re-launching the application orrestarting the machine.

这个错误我百度了好多资料,均没有找到相关信息。后来看了下这个项目下./vecode/task.json。发现了这么一句:

上面那一行注释是我自己写的,下面这个红框的内容是配置项自己生成的,幺蛾子就是出在了这儿。

把红框的内容替换为上面那一行即可,但是要注意路径问题,不同的机器的配置路径可能不一致

坑2:

文字版描述为:

launch: program '*****\.vscode\launch.exe' does not exist

出现这个问题的原因是误把launch.json当成C++编译了,VSCode貌似默认编译的是当前活动标签,只需把活动标签切到目标CPP即可。验证如下:

坑3:使用LeetCode插件时,代码在VSCode中各种标红,(多一句废话:这个题解代码我是抄的别人的)如下:

这个可能并不是很严重,只是针对于有强迫症的人群(比如我自己)。有的在本地VSCode中标红,提交的时候却能通过编译。问题在于少了这两行代码:

#include<bits/stdc++.h>
using namespace std;

如下问题解决了:

补充于2020年6月15,坑4:VSCode不支持C++11,百度上所有的方法都试过没啥用。

我换了电脑遇到了这个坑,怎么用百度的解决方法都不对,我重装了一次,结果还是没啥用。然后怀疑是.vscode文件夹下那两个json的问题,于是我把之前的json文件全部删除了,再次编译时选择了下图的第一个,然后按照网上的教程在arg参数里加了个"-std=c++11",即可成功支持c++11了(注意是两个json文件:launch.json文件个和ask.json文件里对应的arg参数都要添加,网上有的说只在launch.json中添加,我亲测了下,好像不行,编译报错)。之前可能是选择了下图的Windows那个选项,无论如何在个json文件的arg参数中添加"-std=c++11"都不好使。

或者可以手动在打开的目录下新建.vscode文件夹,并在.vscode文件夹下添加launch.json和tasks.json。我自己成功的配置如下:

launch.json内容如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations":
    [
        {
            "name": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,  //这个指定是否需要开新的终端窗口,如果为false,倒是可以支持打印中文
            //为true时C++代码中打印中文时会乱码
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\MinGW\\bin\\gdb.exe",
            //上面这一行替换成自己的路径,一般需要安装MinGw编译器或者其他编译器,然后把gdb.exe路径放进来,注意此处是两个反斜杠
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"
        }
    ]
}

task.json内容如下:

{
    "tasks": [
        {
            "type": "shell",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "D:\\MinGW\\bin\\g++.exe",  //记得将此处换成自己的路径,和launch.json中的gdb在同一个目录中
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "-std=c++11"
            ],
            "options": {
                "cwd": "D:\\MinGW\\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

可即使这样,我能编译源文件生成exe文件,他丫的还是有坑。我的代码用到的函数如果没有前置声明,编译终端还是报错(是的,即使exe都生成了还是报编译错误)真是醉了,我也不知道为啥。需要安装的插件如下图:

基本安装这些插件之后,就可以正常编译运行C++的代码了。

坑五:VSCode项目下就只有个launch.json文件,没有task.json文件。

这个是由于在配置项目时候,只是点了一次生成和调试活动文件。我自己测试得出的结论是:第一个生成的 是launch.json文件,第三个生成的是task.json 文件。我的生成和调试活动文件点击后界面如下:

我针对的都是g++的编译器而言的,由于cpp.exe的相关配置没有试过,不敢妄谈。有时候只有个launch.json文件程序也能编译运行,但有时候就不行。例如,2020.7.1之前我就只有个launch.json文件就能编译运行,但是自从那天上午更新了之后,就不行了。尤其是涉及到c++11标准的一些东西,更新后编译各种报错(在命令行手动编译倒是能通过编译生成exe文件,但是这手动输入哪有一键生成香啊)。后来自己就测试了下上图中的第一个g++和第三个g++,然后得出了选项和文件之间的对应关系。

注意,有的朋友可能已经生成了一个launch.json后就找不到打开上图的界面从而无法生成task.json文件,编译又报错(起初我也是这样),这时候你随便新建一个cpp文件,然后打开,单击鼠标右键,就会出现下图的提示,点进去就能找到对应的选项。

需要支持c++11的参照网上的方法:在task.json下添加“-std=c++11”,但是,注意不要分割了下图框起来的这两行,否则又生成不了exe文件。

坑五:VSCode无法使用万能头文件<bits/stdc++.h>

我遇到这个原因是因为自己的电脑上既装了Visual studio企业版,又装了MInGW的编译器。所以这个仅供参考一下。Visual studio是一个集成开发环境,编译器和调试器以及include路径全部都有了,但是就是不支持万能头文件,当时我还以为是自己的环境变量设置错了,折腾了一晚上。第二天看了知乎一张帖子(后面会将链接放在参考链接处),就怀疑可能是VSCode使用的是Visual  Studio企业版的include路径而不是我想使用的MinGW里的include路径。试了下果真生效了。具体操作如下:

ctrl+shift+p然后搜索下图:

选择UI模式,然后选择下图(注意一定要在这之前配置好MinGW的环境变量):

然后载设置最后一项:

至此,我就能使用MinGw的万能头文件了

坑五参考链接:Windows下配置VSCode使用mingw-w64的gcc、g++编译器和GDB调试器 - 知乎 (zhihu.com)

送个小彩蛋——配置MinGW的环境变量:

其实编译器和调试器的路径配置很简单,但是不好整的是include路径的配置,这个玩意儿不好设置,我的环境变量设置如下,只是能用,但是不一定是最简单或者最好的设置方法:

添加下面这两行到环境变量里面就行了:

D:\MinGW\lib\gcc\x86_64-w64-mingw32\8.1.0\include\c++
D:\MinGW\lib\gcc\x86_64-w64-mingw32\8.1.0\include\c++\x86_64-w64-mingw32\bits

注意前面的D:\MinGW\lib\这一块要换成自己的路径

  • 78
    点赞
  • 203
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
ORA-00922错误是Oracle数据库的一个常见错误,它通常出现在创建表时。错误提示“missing or invalid option”表示缺少或无效的选项。 要解决这个问题,需要检查创建表语句,确保没有遗漏或错误的选项。下面是一些常见的导致ORA-00922错误的原因和解决方法: 1. 缺少关键字或语法错误:检查创建表语句,确保关键字和选项使用正确。比如,确保表名、列名和数据类型正确拼写。 2. 缺少括号或引号:如果在创建表语句使用了括号或引号,确保它们正确闭合。比如,在定义列时使用引号括起列名,要确保每个列名都有闭合的引号。 3. 选项顺序错误:有些选项需要按照特定的顺序出现。比如,在定义列时,必须先指定列名,再指定数据类型。检查语句选项的顺序是否正确。 4. 特殊字符使用错误:如果在创建表语句使用了特殊字符,比如斜杠“/”或反斜杠“\”,确保它们正确使用并转义。特殊字符的错误使用可能会导致ORA-00922错误。 5. 数据库版本不兼容:有时,某些选项或语法可能在特定的数据库版本不可用。如果在创建表时使用了这些不受支持的选项,可能会导致ORA-00922错误。在创建表之前,检查数据库版本和相应的文档,以确保所使用的选项可用。 通过检查和纠正上述问题,可以避免ORA-00922错误的发生,成功创建临时表。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值