每一個可以努力的日子,都是一份厚禮。
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 也可以發表評論或引用到你的網站。除特殊說明外文章均為本人原創,並遵從署名-非商業性使用-相同方式共享創作協議,轉載或使用請註明作者和來源,尊重知識分享。 |
批評不自由
則讚美無意義