对错误“ Initializer元素不恒定”的见解

时间:2018-07-05 20:45:31

标签: c

看下面的代码...我在行号上看到了所述错误。 6 ... 请问谁能解释为什么会这样?

#include<stdio.h>

struct test{
    int data;
};

typedef struct test* Test;

Test obj=(Test) calloc(1,sizeof(struct test));

int main()
{
    return 0;
}

1 个答案:

答案 0 :(得分:5)

变量obj驻留在文件范围内,因此它的初始化程序必须是编译时间常数。您正在尝试调用一个函数。不允许这样做,否则将意味着代码将在函数外部运行(在本例中为调用函数)。

您需要将为值赋值的代码移到主函数中。

#include<stdio.h>

struct test{
    int data;
};

typedef struct test* Test;

Test obj;

int main()
{
    obj = calloc(1,sizeof(struct test));
    return 0;
}