每一個可以努力的日子,都是一份厚禮。
全局變量
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進行賦值就可以了。