我想要做的是:
我需要將整數寫入二維陣列。陣列的長度為 N*N。所以我 scanf 從用戶那里獲取 N 的值。
C/C 擴展給出了“運算式必須有一個常量值”。但是用 gcc 構建它作業得很好
我試過的:
C/C 擴展N在兩個陣列中都給出了錯誤,“運算式必須有一個常量值”。
經過一些谷歌搜索答案后,我嘗試將擴展中的編譯器版本設定為 c99,因為這是支持可變長度陣列的版本。但它仍然給出同樣的錯誤。嘗試使用其他較新的 c 版本,intellicense 仍然給出相同的錯誤。
代碼和設定:
tree.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": ""
}
我發現了類似的答案: C 的 VS 代碼中的“運算式必須有一個常量值”錯誤
uj5u.com熱心網友回復:
IDE 可能會警告您潛在的編程錯誤,因為值N可以在范圍內更改mintree并且treewalked仍在范圍內。您應該能夠通過以下修改來解決此問題:
#include <stdio.h>
#include <stdlib.h>
int main() {
int N_scan, i, j;
scanf("%d", &N_scan);
const int N = N_scan;
int min_tree[N][N];
int tree_walked[N];
}
的價值N,不能同時改變min_tree,并tree_walked在范圍。
這里有一個類似的答案(對于 C 案例):
https://stackoverflow.com/questions/9219712/c-array-expression-must-have-a-constant-value#:~:text=expression must have a constant value. When creating,宣告 const: doesn't even provide a variable name。
uj5u.com熱心網友回復:
只是為了補充另一個答案,VS Code 的智能感知默認使用 MSVC 作為編譯器。MSVC 不支持整個 C99,包括非常數長度的陣列。
您可以更改 VS Code 設定中使用的編譯器,并將其設定為支持此功能的 GCC。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/378479.html
