- ベストアンサー
C言語プログラムエラーについて
C言語(CCS)でPICに書き込むためのプログラムを書いているのですが、 main関数内でfloat a[10]と宣言するとエラーは出ないのでが、 float a[100]にするとエラーが出てしまいます。 実数の配列を100個以上宣言したいのですが、doubleは使えないので どうすれば良いのかわかりません。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
SOKUTEI1.C のエラー行近辺のソースはどうなっていますか?
その他の回答 (2)
- don_go
- ベストアンサー率31% (336/1059)
>float a[100]にするとエラーが出てしまいます。 どんなエラーメッセージが出ていますか?
補足
お返事ありがとうございます。float a[100]にすると Building SOKUTEI1.HEX... Compiling SOKUTEI1.C: Command line: "C:\PROGRA~1\PICC\CCSC.EXE +FM +t C:\PROGRA~1\MPLAB\E14043\SOKUTEI1\SOKUTEI1.C" Error[45] C:\PROGRA~1\MPLAB\E14043\SOKUTEI1\SOKUTEI1.C 11 : Subscript out of range MPLAB is unable to find output file "SOKUTEI1.HEX". This may be due to a compile, assemble, or link process failure. Build failed. このようなエラーメッセージが出てきます。
- charmer29-2
- ベストアンサー率25% (41/159)
非常にタイトな環境でスタック領域が非常に小さいか、 ローカルに配列を作れない制限があるのでしょうか。 静的にする(static)とか動的にする(malloc())など、 環境に応じて試してみてはいかがでしょう。
お礼
a[20]までなら実行できたのでこれで測定することにしました。 お返事ありがとうございました。
補足
プログラムはPICのAD変換を使って電圧測定を行うもので エラー行近辺のソースは #include<16f877.h> #fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP #device ADC=10 #use delay(CLOCK=20000000) #use rs232(BAUD=9600, XMIT=PIN_C6, RCV=PIN_C7) void main() { float a[10],ave,bunsan; int i; char cmd; setup_adc_ports(RA0_ANALOG); setup_adc(ADC_CLOCK_DIV_32); このようになっています。