ページ 11

[44章]func_countの値

Posted: 2011年8月07日(日) 16:38
by whity
龍神録プログラミングの館を参考に、シューティングゲームを作っている者ですが、
44章のデバッグ支援関数を実装してみようと思い、コンパイル、実行してみたのですが、
実行した直後に"func_countの値30が異常です"と何行もメッセージが出力されて、デバッグ関数を動かすことができません。
試しに
int func_count;
と宣言されているところを
int func_count=0;
と変えてみても実行結果が変わらず、
#define FUNC_MAX 30

#define FUNC_MAX 31
とすると今度は"func_countの値31が異常です"と出力されます。
func_countの初期化はどこで行っているのでしょう?
そして、どうしてこのような実行結果になってしまうのでしょうか。
ちなみにコンパイラは Borland C++ Compiler 、OSは windows7 64bitです。
どなたかわかる方、ご回答よろしくお願いします。

Re: [44章]func_countの値

Posted: 2011年8月10日(水) 21:55
by Dixq (管理人)
>int func_count;
>と宣言されているところを
>int func_count=0;
>と変えてみても実行結果が変わらず、

グローバル変数はデフォルトで0になるので、0を入れても結果は変わりません。

> func_countの初期化はどこで行っているのでしょう?

enter_func_tm関数を見て頂ければお分かり頂けると思いますが、
その関数内で
func_count=0;
をしているところで、0を格納しています。
初期化が問題なのではなく、1ループにFUNC_MAX回以上コールしているためでしょう。
配列で用意しているので、関数を増やすと定義の値をいちいち増やさないといけません。
C++であればstd::vector等を使えば楽になるかと思います。

ということで、
enter_func_tmをコールしている回数を確認して下さい。
この関数のflagに1を渡せばカウンタが0に戻ります。

Re: [44章]func_countの値

Posted: 2011年8月11日(木) 16:27
by whity
main.cppのfps_wait();の次にenter_func_tm("待機した時間",1);が入っていませんでした;
ほんと、自分の注意力のなさに自分で驚きました。
管理人様、このようなくだらない質問に答えていただき、ありがとうございました。