每一个可以努力的日子,都是一份厚礼。
全局变量
struct类型的全局变量初始化
2010 11月 7th
今天在实现一个队列时犯了一个很傻逼的错误。一个定义为struct类型的全局变量,我在想定义完后立刻初始化,就写成类似下面这种样子:
struct { int i; int j; } test; test.i = 1; test.j = 1; |
结果gcc编译器报错,“initializer element is not constant”
在我的实际情况中,test的成员变量i和j也为strcut类型,报的错为“struct expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘”
真神奇,int char类型都可以直接初始化,struct类型就不行。
最后在http://bbs.chinaunix.net/thread-1285396-1-1.html的4楼找到了说法。全局变量在编译时就必须确定其值,故C有静态存储区数据必须用常量初始化的规定。
其实很简单, 在全局空间定义struct test,然后再写一个初始化函数对test进行赋值就可以了。