• ベストアンサー

C言語プログラムエラーについて

C言語(CCS)でPICに書き込むためのプログラムを書いているのですが、 main関数内でfloat a[10]と宣言するとエラーは出ないのでが、 float a[100]にするとエラーが出てしまいます。 実数の配列を100個以上宣言したいのですが、doubleは使えないので どうすれば良いのかわかりません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • don_go
  • ベストアンサー率31% (336/1059)
回答No.3

SOKUTEI1.C のエラー行近辺のソースはどうなっていますか?

hiro-333
質問者

お礼

a[20]までなら実行できたのでこれで測定することにしました。 お返事ありがとうございました。

hiro-333
質問者

補足

プログラムは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); このようになっています。

その他の回答 (2)

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.2

>float a[100]にするとエラーが出てしまいます。 どんなエラーメッセージが出ていますか?

hiro-333
質問者

補足

お返事ありがとうございます。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. このようなエラーメッセージが出てきます。

回答No.1

非常にタイトな環境でスタック領域が非常に小さいか、 ローカルに配列を作れない制限があるのでしょうか。 静的にする(static)とか動的にする(malloc())など、 環境に応じて試してみてはいかがでしょう。

関連するQ&A