c - c99 模式下的 VScode "expression must have a constant value"

标签 c visual-studio-code

我正在尝试做的事情:
我需要将整数写入二维数组。数组的长度是N*N。所以我 scanf 从用户那里获取 N 的值。

C/C++ 扩展给出了“表达式必须具有常量值”。但是用 gcc 构建它效果很好

我尝试过的:
C/C++ 扩展在两个数组中的 N 上给出错误,“表达式必须具有常量值”。

经过一些谷歌搜索答案后,我尝试将扩展中的编译器版本设置为 c99,因为这是支持可变长度数组的版本。但它仍然给出相同的错误。尝试使用其他较新的c版本,intellisense仍然给出相同的错误。

代码和设置:
树.c:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int N, i, j;
    scanf("%d", &N);
    int min_tree[N][N];
    int tree_walked[N];
}

c_cpp_properties.json:

{
    "name": "TUF_Laptop",
    "includePath": [
        "${workspaceFolder}/**",
        "/usr/local/include",
        "/usr/include",
        "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include",
        "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include-fixed",
        "/usr/lib/gcc/x86_64-pc-linux-gnu"
    ],
    "defines": [
        "_DEBUG",
        "UNICODE",
        "_UNICODE"
    ],
    "compilerPath": "/usr/bin/gcc",
    "intelliSenseMode": "linux-gcc-x64",
    "compilerArgs": [
        "-O3 -Wall -Wextra -std=c99"
    ],
    "cStandard": "c99",
    "cppStandard": "gnu++17",
    "compileCommands": ""
}

我发现的类似答案: "expression must have a constant value" error in VS code for C

最佳答案

只是为了补充另一个答案,VS Code 的智能感知默认使用 MSVC 作为编译器。 MSVC 不支持整个 C99,包括非恒定长度数组。

您可以更改 VS Code 设置中使用的编译器,并将其设置为支持此功能的 GCC。

在 VS Code 中,在命令选项板 (Ctrl + Shift + P) 中键入“C/C++:编辑配置 (UI)”(不带引号)并编辑配置。但是,它会在您的文件夹中创建一个 .vscode/c_cpp_properties.json 文件。我认为除了将此文件复制到每个 .vscode 文件夹之外,没有其他方法可以全局设置它。

screenshot

关于c - c99 模式下的 VScode "expression must have a constant value",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70290126/

相关文章:

visual-studio-code - VS Code - 有没有办法计算项目中的所有代码行?

visual-studio-code - 如何在visual studio代码中对搜索到的文件进行排序?

c - OpenMPI 永远等待

c - 针对 glib 进行编译时出现链接器错误...?

visual-studio-code - 在Visual Studio Code中找不到文件

visual-studio-code - 如何使用 JavaScript/Nodejs 在 VSCode 中显示警告、错误、函数、变量

python - vscode python启动 'current file'作为模块

c - 位移位,右移 4 位

c - 为什么我必须重复介绍句?

c - 读取文件并通过不循环的套接字连接发送