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;

编译通过。

1、背景C语言编译错误:error: initializer element is not constant,出错代码如下: char *info = (char *)malloc(len); static char *info_t = info;这里试图用malloc分配的内存指针初始化一个静态变量,导致了上述错误。2、出错原因static变量为全局变量,全局变量的值不能在编译时确定,而是在运行时确定(编译原理),所以这里不能直接在声明时初始化全局变量。改为如下:
当在 全局变量 定义一个指针变量,并动态分配内存后,发现竟然编译不过去,并提示 "" initializer element is not const ant "": char *buf = malloc(1024); int main() { return 0; 后来知道了,不能将 全局变量 初始化为一个无法在编译时期确定的值。再想想暑假学习的CSAPP...
结构体初始化 initializer element is not const ant 全局变量 是保存在静态存储区的,因此在编译的时候只能用常量进行初始化,而不能用变量进行初始化。 全局变量 的内存地址直接存储变量的值。在该程序中是用函数htonl的返回值给结构体成员进行初始化的,因此会出错. initializer element is not const ant