構造体

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
けろん

構造体

#1

投稿記事 by けろん » 15年前

構造体関連の質問です
わかる方回答よろしくお願いします
まず、ファイルは三つ
・構造体の宣言がしてあるファイル
・関数が宣言してあるファイル、構造体のメンバにアクセス(構造体の初期化関数あり)
・メイン関数があるファイル、関数を呼び出す
で、構造体の初期化関数を呼び出した後に、メインループで一定周期で関数を呼び出します
仮に呼び出されるたびに構造体のメンバ(A)に毎回1を足していくとします
そのときに関数内では構造体のメンバ(A)の値に対応した処理をします
いざ実行してみると構造体のメンバ(A)は初期化した値そのままになっているんです
原因はわかりません
やっぱり確実性のあるグローバル変数にしたほうがいいのでしょうか
よろしくお願いします 画像

たかぎ

Re:構造体

#2

投稿記事 by たかぎ » 15年前

ソースを貼ってください。

tk

Re:構造体

#3

投稿記事 by tk » 15年前

構造体はローカル変数ということですよね?
一定周期で呼び出される関数には参照渡しをしていますか?
でも初期化が出来ているということは参照渡しは出来ているということですよね・・・

たかぎさんの仰っている通り、ソースを貼ってもらうのがいいかと。

たいちう

Re:構造体

#4

投稿記事 by たいちう » 15年前

> やっぱり確実性のあるグローバル変数にしたほうがいいのでしょうか

そんなことしてたらグローバル変数だらけになってしまいます。
原因を追究して構造体を確実に使えるようにするのがベストです。
それほど難しいことではないです。

で、書かれた情報だけでは原因はわかりませんので、
ソースを貼るか添付するかして下さい。

けろん

すいませんでした

#5

投稿記事 by けろん » 15年前

すいませんでした
DXライブラリを使って作ってます
龍神録と同じファイル構成(只単に私がそのまま使ってるだけですが)なので
projectのなかにの適当な章に入れれば動くと思います
なかみはソースファイルだけです
ちなみにSTG製作中です

とりあえず説明
main.cppのなかでは段階に分けて処理してます
iniで初期化→charで表示です
それぞれini.cppとchar.cppに記述してあります
ch_main関数ではdraw_char関数を呼び出してあります
そのdraw_char関数の中にあるようにch構造体のcntメンバの変化に合わせて表示する文字を変えていきます
このとき私が期待する結果は1~5迄行って1に戻るというものです
一応デバッグ用にcntを表示させています
ですが、実行するとずっと1のままでcntの表示は常に0です
素人考えですが、構造体のメンバにアクセスできてないのだと思います
蛇足ですがこれを応用して一定サイクルで表示画像が変わっていく描画をしようと思っています

だめだめな日本語ですいません

よろしくお願いします

tk

Re:すいませんでした

#6

投稿記事 by tk » 15年前

> 素人考えですが、構造体のメンバにアクセスできてないのだと思います
構造体chにはアクセスできています。


ソースを見ただけですが、とりあえずdefine.hのPAD_MAXを256にすれば
chのメンバの値が0になることはないでしょう。

たぶん、main.cppのGetHitKeyStateAll_2関数の中で、
iが16以降になった時(iが16~256のどこかで)に、
メモリ上にあるchの値を書き換えているのではないでしょうか。

けろん

ありがとうございました

#7

投稿記事 by けろん » 15年前

できました!ありがとうございます
返信遅くなって申し訳ないです

閉鎖

“C言語何でも質問掲示板” へ戻る