洞察错误"初始化元素不是常数"

Abh*_*osh 2 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;
}
Run Code Online (Sandbox Code Playgroud)

dbu*_*ush 5

变量obj驻留在文件范围内,因此它的初始化程序必须是编译时常量.你试图改为调用函数.这是不允许的,否则将意味着代码将在函数之外运行(在这种情况下调用函数).

您需要将指定值的代码移动到main函数中.

#include<stdio.h>

struct test{
    int data;
};

typedef struct test* Test;

Test obj;

int main()
{
    obj = calloc(1,sizeof(struct test));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)