如何在vscode中禁用误报错误? [英] How to disable a false positive error in vscode?
本文介绍了如何在vscode中禁用误报错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经编写了这个基本的C程序:
int main(int argc, char const *argv[])
{
int n = rand();
int a[n];
return a[0];
}
它在GCC中编译得很好。但MS C/C++IntelliSense在显示错误时会出现曲折的状态expression must have a constant value C/C++(28) [4, 8]
。通过谷歌搜索,我发现MSVC还没有实现VLA。但我无法找到一种方法来抑制这个错误。谁来帮帮我!
编辑:另外,令人惊讶的是,第3行rand
的隐式声明没有警告!!
编辑:如果可能,是否有人还可以提到C/C++的替代扩展。
编辑:我正在使用:
- Microsoft VSCode v1.63.2代码编辑器
- Microsoft C/C++扩展包v1.1.10扩展
- MinGW-W64 GCC v8.1.0编译器
GCC未设置编译标志。
C/C++扩展配置如下:
- 编译器路径:
C:Program Filesmingw-w64mingw64ingcc.exe
- cppStandard:GNU++20
- c标准:gnu17
- intelliSenseMode:
windows-gcc-x64
推荐答案
这显示为错误,因为它确实是一个错误。当您使用MSVC
编译器时,它只为您提供MSVC
编译的结果。
现在,这实际上是因为你做了错误的事情。您似乎想要初始化一个大小为n
的数组,该大小是从随机值获得的。换句话说,您应该执行dynamic allocation,即在运行时分配内存。由于您使用的是C语言,因此必须使用malloc函数,如下所示:
#include <stdlib.h>
int main(int argc, char const *argv[])
{
int n = rand();
int *a = malloc(n * sizeof(int));//Dynamic allocation of an array
int val = a[0];//Garbage value
free(a);//Deallocation / Free the memory taken by array
return val;
}
如果要将MSVC
替换为gcc
,可以通过更改设置来更改VS代码中C/C++的默认编译器:
更改您的设置
C_Cpp.default.compilerPath` : C:MinGWing++.exe
编辑:我错误地提到路径应该是bin文件夹的路径。相反,它应该是g++.exe
本身。我已下载最新的二进制文件,并已为您确认。
C_Cpp.default.compilerPath
来实现这一点,这将把您带到所需的输入框。输入C:mingw64ingcc.exe
,编译将MSVC
替换为gcc
/g++
最后,尽量避免VLA,使用动态分配,因为这是一种更安全、更受支持的做法。
这篇关于如何在vscode中禁用误报错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文