天天看点

error: initializer element is not constant

1、背景

C语言编译错误:error: initializer element is not constant,出错代码如下:

char *info = (char *)malloc(len);
    static char *info_t = info;
           

这里试图用malloc分配的内存指针初始化一个静态变量,导致了上述错误。

2、出错原因

static变量为全局变量,全局变量的值不能在编译时确定,而是在运行时确定(编译原理),所以这里不能直接在声明时用malloc返回值初始化全局变量。改为如下:

char *info = (char *)malloc(len);
    static char *info_t;  //只声明
    info_t = info;
           

编译通过。

继续阅读