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;
编译通过。