Cion和C99标准版不能使用可变长度数组吗?标准版、数组、长度、Cion

2023-09-04 02:19:59 作者:逗比少年

我一直很高兴地与Clion一起编写代码,在使用C99标准的同时为大学创建一个项目。从今天起,数组声明的可变长度将不起作用。有谁知道为什么吗? 代码:

int main() {
    // to allow debugging with CLION
    setbuf(stdout, 0);
    int number = 5;
    int myarray[number];
    return 0;
}

CMakeLists.txt

project(PG1 C)

set(CMAKE_C_STANDARD 99)

add_executable(PG1 main.c ...)
c 数组长度函数length C 可变长的数组,老司机手把手教你实现

错误为:

C:...PG1main.c(10): error C2057: Constant value required
C:...PG1main.c(10): error C2466: Declaration of array with constant size 0 not possible
C:...PG1main.c(10): error C2133: "myarray": unknown size
NMAKE : fatal error U1077: "C:PROGRA~2MICROS~22019BUILDT~1VCToolsMSVC1427~1.291inHostx86x86cl.exe": Return-Code "0x2"
Stop.
NMAKE : fatal error U1077: ""C:Program Files (x86)Microsoft Visual Studio2019BuildToolsVCToolsMSVC14.27.29110inHostX86x86
make.exe"": Return-Code "0x2"
Stop.
NMAKE : fatal error U1077: ""C:Program Files (x86)Microsoft Visual Studio2019BuildToolsVCToolsMSVC14.27.29110inHostX86x86
make.exe"": Return-Code "0x2"
Stop.
NMAKE : fatal error U1077: ""C:Program Files (x86)Microsoft Visual Studio2019BuildToolsVCToolsMSVC14.27.29110inHostX86x86
make.exe"": Return-Code "0x2"
Stop.

推荐答案

Clion正在使用MS Visual Studio 2019作为基础编译器。MSVC不是完全兼容的C编译器,尤其是它不支持可变长度数组。

您必须使用GCC或clang才能获得对VLA的支持。