いつもお世話になっております。
現在WINDOWSプログラムでゲームを最中なのですが、スレッド内でスレッドを作成できなくて困っています。
キャラを動かすスレッドで以下の関数を使い、スレッドを作成しようとしたのですが、
CreateThread(NULL, 0, ATK, (LPVOID)&x, 0, &dwID);
以下のようなエラーメッセージが出てしまいます。
'ATK':定義されていない識別子です
'関数' : 間接参照のレベルが 'LPTHREAD_START_ROUTINE' と 'int' で異なっています。
'CreateThread' : の型が 3 の仮引数および実引数と異なります。
わかる方いましたらどうがご指導お願いします。
初歩的なミスでしたらすみません。
No.5
- 回答日時:
>まだ勉強を始めたばかりですのであまり小難しいことは気にせずに作成してました。
そろそろ本格的に勉強してみようと思います。初心者でスレッド慣れしていない人がスレッドプログラムを組むのは危険ですよ。変数の内容が各スレッドで同期処理せずに同時更新されたりすると当たり判定やらキャラのワープやら厄介なバグが起こります。基本的にスレッドで変数の内容更新の状況をデバッガで厳密にトレースする事は不可能ですから。
スレッドで意味があるのは、マルチコアCPUを有効に活用する必要があるほど負荷が高い処理である事か、ロード処理と平行でゲームが進行する場合ぐらいです。その他の場合は紹介したタスクシステムが定番ですよ。
紹介したシューティングゲームのタスクシステムはアクション系でも問題なく使えますので検討してみてください。
このぐらいやるならスレッドの意味も有ります。↓
http://game.watch.impress.co.jp/docs/20070131/3d …
No.4
- 回答日時:
エラーとは別の話ですが、攻撃処理を別スレッドで動かして同期処理とか大丈夫ですか? 会話の流れを見ていると、その部分を理解しているのか老婆心ながら心配になりました。
もしシングルコアでは負荷が高すぎる処理ならば、スレッドではなくマルチコア用のOpenMPやMPIを使われたほうが良いと思います。
ゲームならタスクシステムが定番ですが、
http://codezine.jp/article/detail/297?p=1
スレッドを使うのは、それとは違う目的なんですよね?
参考にしてみます、ありがとうございます。
まだ勉強を始めたばかりですのであまり小難しいことは気にせずに作成してました。
そろそろ本格的に勉強してみようと思います。
No.1
- 回答日時:
エラーの内容そのままです。
>'ATK':定義されていない識別子です
「ATK」という宣言子はありますか?
>'関数' : 間接参照のレベルが 'LPTHREAD_START_ROUTINE' と 'int' で異なっています。
宣言子が見つからないのでとりあえずint型と仮定したので、型が一致してません。
>'CreateThread' : の型が 3 の仮引数および実引数と異なります。
型が一致しないのでエラーになってます。
第3引数は、LPTHREAD_START_ROUTINE型で実行する関数名を渡す必要があります。
この回答への補足
さっそくのご返答ありがとうございます。
第3引数ATKはスレッド名なので、ATKスレッドはしっかり作って、名前もしっかり確認しました。
いろいろやっておかしいと思ったので今まで使用していた他スレッドを同じ場所で作成してみたのですが、やはり同じエラーが出てしまいました。
第4引数に渡す構造体は自分で作成した構造体で構わないのですよね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- ノートパソコン Windows11搭載パソコン 新規購入にあたって 4 2022/11/09 18:11
- PHP isset — 変数が宣言されていること、そして null とは異なることを検査 1 2022/03/27 17:34
- CPU・メモリ・マザーボード インテルCPUの世代ごとのデスクトップとノートのコア数についてこれで正しいですか?(*´ω`*) 1 2023/01/07 14:44
- CPU・メモリ・マザーボード CPUについて 4 2022/07/09 13:41
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マイクロソフトedge で5チャン...
-
スレッドの監視方法
-
メモリアクセスの競合について
-
C言語で一定時間待機後、再実行
-
pthread_attr_tへの値の代入に...
-
WaitForSingleObjectの使い方に...
-
別スレッドのデータを受信できない
-
アラート可能な待機状態とは
-
マルチスレッドプログラミング...
-
DirectX 11のConsntanBuffer
-
VB2005 シリアル通信のClose処理
-
Macターミナルで実行中のプログ...
-
VBAの配列サイズとメモリに関して
-
なんかC言語でプログラム書いて...
-
VBSの処理中一旦処理を止めて再...
-
プログラミング ソースコード
-
DoEvents関数って何?
-
MACで動く実行ファイルをWindow...
-
Webプログラムってネイティブア...
-
COMBOBOXで日付入力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WaitForSingleObjectの使い方に...
-
スレッドにて同一メモリの書き...
-
VC++スレッドの正しい終了のさ...
-
スレッドの監視方法について
-
Windows上で、シグナル(SIGTERM...
-
スレッドの終了の仕方
-
スレッドの安全な終了のさせ方
-
CWnd::OnTimerのスレッドの取得
-
MFC通信プログラムマルチスレッ...
-
Linuxでスレッド優先度って変え...
-
.netアプリへのSendMessageでフ...
-
VB2005 シリアル通信のClose処理
-
別スレッドからメインダイアロ...
-
マルチスレッドについて
-
スレッドの終了はどうやるんで...
-
マルチスレッドプログラミング...
-
別スレッドのデータを受信できない
-
特定のスレッドの破棄
-
msec単位のWait Timerが作れない!
-
C# スレッド終了の監視について
おすすめ情報