每一个可以努力的日子,都是一份厚礼。
struct类型的全局变量初始化
今天在实现一个队列时犯了一个很傻逼的错误。一个定义为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进行赋值就可以了。
这篇文章由lovelucy于2010-11-07 20:02发表在编程。你可以订阅RSS 2.0 也可以发表评论或引用到你的网站。除特殊说明外文章均为本人原创,并遵从署名-非商业性使用-相同方式共享创作协议,转载或使用请注明作者和来源,尊重知识分享。 |
批评不自由
则赞美无意义