“initializer element is not constant”错误信息解析 1. 错误信息含义 错误信息“initializer element is not constant”通常出现在C或C++编程语言中,表示在全局或静态变量的初始化时,使用了非常量表达式。在C和C++标准中,全局变量和静态变量(包括静态存储类变量和文件作用域变量)的初始化必须是一个常量表达式。 2....
1text.c:4: error: initializer elementisnot constant 其中原因在于:C语言初始化一个全局变量或static变量时,只能用常量赋值,不能用变量赋值!上面的代码第3行的i是个变量,于是第4行出错。这里注意,即使第3行用const int a = 100,编译器也视a为变量。 解决方法一: 1#include <stdio.h>23floati =3;45int...
解决办法如下:定义成局部变量就OK了。 #include <stdio.h>inta =1314;int* p_a = &a;intmain(void) {void* v_p =p_a;return0; } 参考链接: initializer element is not constant 问题
原因: 全局变量c的值不能在编译时确定,要在执行是确定(编译原理。。) 解决办法: [cpp] view plaincopy #include int a = 1; int b = 2; int c; //只声明 int main() { c = a + b; //在main函数里赋值 printf("c is %d\n", c); return 0; } ...
原因: 全局变量c的值不能在编译时确定,要在执行是确定(编译原理。。)解决办法:[cpp] view plaincopy include <stdio.h> int a = 1;int b = 2;int c; //只声明 int main() { c = a + b; //在main函数里赋值 printf("c is %d\n", c);return 0;} ...
当在全局变量定义⼀个指针变量,并动态分配内存后,发现竟然编译不过去,并提⽰ ""initializer element is not constant"":char *buf = malloc(1024);int main() { return 0;};后来知道了,不能将全局变量初始化为⼀个⽆法在编译时期确定的值。再想想暑假学习的CSAPP中的链接那部分就知道为什么了。编译...
全局变量是保存在静态存储区的,因此在编译的时候只能用常量进行初始化,而不能用变量进行初始化。全局变量的内存地址直接存储变量的值。在该程序中是用函数htonl的返回值给结构体成员进行初始化的,因此会出错.initializer element is not constant。 htonl()函数实现主机字节序转换成网络字节序(大端字节序); ...
出现“initializer element is not constant”错误 原因: 全局变量c的值不能在编译时确定,要在执行是确定(编译原理。。)解决办法:[cpp] view plaincopy include <stdio.h> int a = 1;int b = 2;int c; //只声明 int main() { c = a + b; //在main函数里赋值 printf("c is %d\...
initializer element is not constant 初始化元素不是常数
以下两段代码,如果命名为 *.c 文件,在GCC下编译,都会报错,错误信息是“initializer element is not constant ”。 但是如果把 *.c 文件改名为 *.cc文件,用g++编译,就不会报错。 谁能详细解释一下这是为什么。 // code 1 inti=10; intj=i+4; ...