我正在尝试做的事情:
我需要将整数写入二维数组。数组的长度是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 文件夹之外,没有其他方法可以全局设置它。
关于c - c99 模式下的 VScode "expression must have a constant value",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70290126/