2013-06-29 63 views
1

在使用atmega32進行AVR編程時,我無法爲數組賦值。我收到錯誤:我無法給數組賦值

Assignment of read-only str[i]

我在做什麼錯?

我的代碼是:

const char str[1000]; 
void Serial_tx(unsigned char ch) 
{ 
    for (i = 0; i < 10; i++) 
    { 
    str[i] = ch; 
    } 
} 

回答

3

陣列被聲明const,表明它不應該被修改。在微控制器中,這更有意義,因爲const變量可以存儲在(有效)只讀存儲器(如Flash,EEPROM或ROM)中。

+0

哦!錯誤..釹我完成了.... :) –

0

完全與傑裏同意...

剛需,如果你需要的數組爲const,那麼它應該被宣佈爲/這樣定義添加:

const char str[11]={'0','1','2','3','4','5','6','7','8','9',0 }; 

- 但那朵意味着你可以只在運行時讀取str []!

,如果你想改變運行str的內容比它不能是const:

char str[1000]={0}; 

- 這可以讓你閱讀運行

/寫訪問提防的是總規模你的非const變量,堆棧和C/C++語言引擎不能超過目標設備的RAM內存!
如果確實如此,那麼編譯器通常會拋出一些錯誤... 但並非總是(有時堆棧未完全佔)