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
。