ページ 11

メイン関数を通らない

Posted: 2010年6月23日(水) 17:52
by yamataro
こんにちは。C++でゲームを作っている中2です。
今アクションを作っていて、途中まではうまくいっていたのですが、
敵の処理を加えてからは、なぜかメイン関数を通らず無限ループしてしまうようになりました。
メイン関数を通ってすぐに、メッセージボックスを出すようにしたのですが、それすら表示されません。
つまり、

・メイン関数を通っていないのでウィンドウすら表示されない
・でもプログラムは動いているので新しくメイクすることができない
・だからいちいちwindowsを再起動しなければならない

ということです。この状態がずっと続いていますが、いまだ解決策が見えません。
こんなことってあるのでしょうか。
また、その場合のプログラムを強制終了させる方法などはありますか?
どうかよろしくお願いします。

Re:メイン関数を通らない

Posted: 2010年6月23日(水) 17:56
by Dixq (管理人)
環境や利用しているライブラリは何ですか?

メイン関数を通らないという事は無いと思います。※無い事が無いですね・・;
恐らく既に動いている実行ファイルがあるので、実行できていないだけではないでしょうか。

そんな時はタスクマネージャーで強制終了すると良いと思います。
Ctrl+Alt+Delでタスクマネージャーを起動し「プロセス」タブで自分が作ったものと同じ名前のプロセスを見つけて強制終了して下さい。

恐らく終了処理が正常に行われていないのだと思います。

Re:メイン関数を通らない

Posted: 2010年6月23日(水) 18:13
by dic
失礼ながら
おそらく釣りかと・・・

Re:メイン関数を通らない

Posted: 2010年6月23日(水) 18:39
by 御津凪
> 失礼ながら
> おそらく釣りかと・・・

釣りかどうかはわかりませんが、原因の可能性を書いておきます。

グローバル変数にクラス型の変数があると、そのクラスの初期化がメイン関数を通る前に行われます。
そこの処理に問題があるのなら、この原因が起こる可能性があります。

Re:メイン関数を通らない

Posted: 2010年6月23日(水) 19:10
by たかぎ
> メイン関数を通らないという事は無いと思います。

そんなことはありません。
可能性を以下に列挙します。

1. プログラムの開始がWinMain等の場合には、mainは通らない。
 MFCのように、WinMainが隠蔽されている環境でよくある。

2. コンソールアプリケーションとしてコンパイルしたので、WinMainを通らない。
 MinGWではあり得る。

3. 非静的オブジェクトの初期化で永久ループに陥った。

Re:メイン関数を通らない

Posted: 2010年6月23日(水) 19:13
by Dixq (管理人)
> みつなぎさん

確かにそうですね。

> たかぎさん

確かにそうですね・・。

安易なコメントすみません;

> dicさん

どうしてそう思われるのです?

Re:メイン関数を通らない

Posted: 2010年6月23日(水) 19:26
by mila
古いプログラムが動作中なのでメッセージボックスを表示するようソースを変更しても
新しいプログラムがビルドできていないということはないですか?
または、ReleaseとDebugをいつの間にか切り替えていたということはないですか?

いずれにしろ、実行するexeファイルのタイムスタンプを確認してみてください。

Re:メイン関数を通らない

Posted: 2010年6月23日(水) 20:10
by dic
>どうしてそう思われるのです?
1.メールアドレスが無料(yahoo)
2.中2
3.古い単語を使っているので長くプログラムにかかわっていると
思われるが上の2に反する

4.多分、レスがないと思う
5.ちょっと前に変な記事があった(削除されたようですが
6.知識を得る過程が普通ではない
>・メイン関数を通っていないのでウィンドウすら表示されない
>・でもプログラムは動いているので新しくメイクすることができない
>・だからいちいちwindowsを再起動しなければならない

違ってたらすいません
私のレスは削除していただいてもいいです

知識を得る過程というより
知識のバランスがむちゃくちゃと言ったほうがいいでしょうか
画像

Re:メイン関数を通らない

Posted: 2010年6月23日(水) 22:37
by ookami
うーむ… たまたまステップ実行やタスクマネージャを知らなかったとか、あるいは、ソースのバックアップがなかったとかじゃないかと…

むちゃくちゃプログラミングに傾倒してる中二がいてもいいと私は思いますけどね。

ともかくyamataroさんの回答次第ですねw

Re:メイン関数を通らない

Posted: 2010年6月23日(水) 23:07
by Dixq (管理人)
確かに中学生のwindows使いがメイクするとはなかなか言わないかもしれませんが、Linuxから入った方かもしれませんし
釣るという行為の意味が私にはわかりません・・。

yamataroさんの回答を待ちましょう。

Re:メイン関数を通らない

Posted: 2010年6月23日(水) 23:34
by ookami
私も釣る意味がないと思います。

windowsでもBCC Developerではメニュー「プロジェクト→メイク」で(ry

Re:メイン関数を通らない

Posted: 2010年6月24日(木) 17:45
by yamataro
テスト週間中で回答が遅れてすいません。
皆さんたくさんのコメントありがとうございます!

やはり2つのクラス型のグローバル変数に問題がありそうなのですが、
コンストラクタに無限ループは見つかりませんでした。
そこで宣言する位置を変更してみたのですが、なぜかそこの宣言のところで
「宣言の構文エラー」と出てしまいます(いい忘れましたがコンパイラはBorland C++ Compilerです)。
CからC++に変えたばかりなので原因がよく分かりません。
クラス型の変数はextern宣言できないのでしょうか?

Re:メイン関数を通らない

Posted: 2010年6月24日(木) 17:54
by ookami
なんとなくですが、

chara.h
enemy.h

の中でも、
#ifndef INCLUDED


#endif
してませんか?「INCLUDED」という名前が同じで
charaのクラス宣言が飛ばされていたりしないかなと。

よろしければ、ソースをまるごとアップしてもらったほうが
早いかもしれません。

ていうかテスト週間中にゲーム作っt(ry
いやいや、私も人のこと言えませんからねwwww