【问题标题】:Error: Variable-sized object may not be initialized. I don't get why [duplicate]错误:可变大小的对象可能未初始化。我不明白为什么[重复]
【发布时间】:2021-03-27 18:36:09
【问题描述】:

我试图在数组初始化中执行此练习代码,但我不断收到标题中所述的错误。在线研究我发现将“SIZE”定义为常量应该可以完成这项工作,但它对我不起作用。问题是我从教授那里复制了这段代码,对他来说运行良好。你能帮帮我吗?

谢谢

#include <stdio.h>

int main(void) {
    const int SIZE = 5; 
    
    int grades[SIZE] = {78, 67, 92, 83, 88};
    double sum;
    int i;
    
[...]

    }

【问题讨论】:

    标签: c compiler-errors


    【解决方案1】:

    不能用 C 语言初始化可变大小的数组。

    你需要手动初始化它们

    int main(void) {
        int SIZE = 5; 
        int grades[SIZE];
       
        memcpy(grades, (int[]){78, 67, 92, 83, 88}, sizeof(grades));
    
    

    你这个不称职的教授实际上是在使用 C++ 编译器——但它是一种不同的语言,不能使用 C++ 编译器来编译 C 代码

    【讨论】:

    • 事实上,它可能是同样糟糕的 clang 编译器,默认情况下它会默默地将其转换为静态数组 (warning: variable length array folded to constant array as an extension [-Wgnu-folding-constant])...
    猜你喜欢
    • 2011-09-26
    • 1970-01-01
    • 2012-12-20
    • 2021-03-02
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多