2016-12-03 205 views
0

我正在使用IAR EMBEDDED WORK BENCH的C++上工作。從main()調用函數時遇到問題。增加無符號字符數組的大小

我的程序用於通過儀表協議從儀表中獲取數據。 在我的程序中,我已經聲明瞭一個大小爲255的unsigned char數組。但是來自meter的數據大於255。是否有任何可能增加數組的大小?現在我已經聲明瞭另一個無符號字符數組,但它不能解決我的問題。此外,我已經通過這link,但我無法得到任何幫助。我堅持了將近一個月,這就是爲什麼我選擇在這裏發佈我的問題來獲得一些幫助。

任何幫助將不勝感激。

+1

除非編譯器和目標平臺以某種方式限制您,否則您可以增加大小。數組中元素的數量與元素數據類型沒有任何關係。或者您可以簡單地在一個循環中進行多次讀取。 –

+0

從來沒有聽說過這個IAR的東西,但是這是C++的獨立實現嗎?你有完全訪問標準庫嗎?在程序運行時,不能增加原始數組的大小,但標準庫提供了可更改大小的容器類型。 –

回答

0
在我的計劃

我宣佈尺寸255 的無符號字符數組我假設你做這樣的事情:

char array[255]; 

你將不能夠延長這個變量,因爲它是在堆棧上分配。

但是你可以使用堆:

char* array = new char[255]; 

這將有可能使您的變量,並用另一個新的呼叫改變它的大小(如果你想擴展不要忘記複製你的舊數據,不要忘記刪除舊的數組)。


或者,如果你能(不知道很多關於你的目標是),只需使用STL vector

std::vector<char> array(255); 

同:

std::vector<char> array; 
array.reserve(255); 

這容器有一些成員功能,如resize,它會幫助你(如果你需要,還是不要忘記複製你的數據)

+1

Google的一些關於「IAR嵌入式」的研究得到https://www.iar.com/iar-embedded-workbench/language-standards/。這些信息讓我得出這樣的結論:OP不一定使用全功能的C++實現,也就是說'std :: vector'可能不適用於他。除此之外,無論如何,自由商店的動態分配往往是嵌入式世界的潛在問題。 –

+0

我也很害怕,因爲他沒有使用它。我會編輯更清楚的謝謝。 –