2016-12-03 13 views
0

IAR EMBEDDED WORK BENCHを使用してC++で作業しています。私はmain()から関数を呼び出す際に問題に直面しています。符号なし文字配列のサイズを増やす

私のプログラムは、メーターからメータープロトコルまでデータをフェッチするために使用されます。私のプログラムで 私はunsigned charサイズ255の配列を宣言しました。しかし、メーターから来るデータは255より大きいです。unsigned char配列のサイズを増やす可能性はありますか?今のところ私は別の符号なし文字配列を宣言しましたが、私の問題は解決しません。また、私はこれを行ったlinkしかし、私は助けを得ることができません。私はほぼ1ヶ月にこだわっているので、ここで質問を投稿して助けてもらうことにしました。

ご協力いただければ幸いです。私のプログラムで

+1

コンパイラとターゲットプラットフォームがあなたを制限するのでなければ、サイズを大きくすることができます。配列内の要素の数は、要素のデータ型とは何の関係もありません。または、ループ内で複数の読み込みを行うこともできます。 –

+0

このIARのことは聞いたことがありませんが、これはC++のフリースタンディングな実装ですか?標準ライブラリに完全にアクセスできますか?プログラムの実行中に生の配列のサイズを増やすことはできませんが、標準ライブラリではサイズを変更できるコンテナの種類が用意されています。 –

答えて

0

私はサイズ255 のunsigned char型の配列を宣言している私は、あなたがそのような何かを前提としています

char array[255]; 

それだからあなたは、この変数を拡張することができませんスタックに割り当てます。

しかし、あなたは、ヒープを使用することができます。

char* array = new char[255]; 

これはあなたの変数を保持し、別の新しいコール(あなたが拡張したい場合は、古いデータをコピーすることを忘れないでください、とそれのサイズを変更することが可能となります古い配列を削除することを忘れないでください)。


または、あなたは(あなたのターゲットについてその多くを知らない)、単にSTL vector使用することができた場合:

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

と同じ:

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

これをあなたが助けてくれるresizeのようないくつかのメンバ関数があります(必要ならばあなたのデータをコピーすることを忘れないでください)

+1

「IAR embedded」に関するGoogleの調査では、https://www.iar.com/iar-embedded-workbench/language-standards/にアクセスしています。この情報は、OPが必ずしもフル機能のC++実装を使用するとは限らない、つまり 'std :: vector'が利用できないという結論に導きます。それとは別に、フリーストアからの動的割り当ては、とにかく埋め込み世界で潜在的な問題になる傾向があります。 –

+0

彼はすでにそれを使用していなかったので、私はそれも恐れていた。私はより明確な感謝のために編集します。 –

関連する問題