NXCでは2次元の配列は使えないの?
Programmer's Guide にはサンプルとして3次元までの配列があるのですが・・・
2次元の配列を使おうとすると・・・定義の部分ではなく、使う部分でエラーになります。
この超単純なプログラムでもエラーになって、実行できません。
何か、基本的なことでバカやっているのでしょうか?
int m[3][4];
という定義の部分はエラーになっていないので、2次元の配列も使えるような気がするのですが・・・
一次元の版列は問題なく使えます。
2010.5.25 追補
情報を提供いただきまして、nbc-1.2.1 r1では、2次元配列が使えることを確認しました。
コメント利用規約に同意する
フォロー中フォローするフォローする
ホントうまくいかないですね^^;
Programmer's Guideの方も宣言の方は「[][]」を使っていますが、
使用する方には使われていませんね。
ということで、使用するには
int m[3][4];
int n[];
n = m[0];
n[0] = 0;
といった感じで一旦別の変数にいれないといけないように見えます
(int[]でキャストしてもエラーでした)
実際に動かしてはいませんので、本当にうまくいってるのかあやしいですが^^;
ネットで調べると・・・やっぱり普通に2次元配列を定義できるのに、直接アクセスできないようです。
サンプルでは一次元配列を挟んでアクセスするようなのですが、うまくできるのかわかりません。
(コンパイルエラーは無いのですが、書き込んだ値が読み出されません)
もう、無駄な努力をするよりも、一次元配列を素直に使ったほうが良いみたいです。
配列の件、最近リリースされた「NBC 1.2.1 r1」ではサポートされたようです
上記バージョンで「m[0][0] = 0;」がエラーにならない事までは確認しました
取り急ぎ、ご報告まで
情報をありがとうございます。
とりあえず、2次元の配列が使えるようになりました。
ウチもエラーが出てましたので、NXT本体のファームウェアを標準1.29に上げたところ
エラーはでなくなりました。
ところがというか、やっぱりというか、書き込んだ値が読み出されませんでした^^;
色々調べたところ標準ファームウェアでは、多次元配列は使用出来ないようです。
拡張ファームウェアの1.28に変えてやると、うまくいきます
拡張ファームウェアは以下からダウンロードできます
http://bricxcc.sourceforge.net/lms_arm_jch.zip
またまた情報ありがとうございます。
拡張ファームウェアは、知らないうちに入ってました。
なので、いつの間にか2次元配列が扱えるようになってました。(笑)