ページ 11

グローバル変数を引数にする

Posted: 2011年8月30日(火) 23:01
by wing
今、以前に作ったゲームのコードのグローバル変数をすべて
引数にして、グローバル変数をなくそうとしています。
そこで分からないことが出てきました。
分かりやすくサンプルにしてみました。

コード:

#include "DxLib.h"

int counter;
void game_main(int *timer);

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );

		int timer = 0;
        // while( 裏画面を表画面に反映, メッセージ処理, 画面クリア )
        while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
			game_main(&timer);

			int Color = GetColor(255, 255, 255);
			DrawFormatString(20, 20, Color, "timer   = %3d", timer);
			DrawFormatString(20, 60, Color, "counter = %3d", counter);
        }
        
        DxLib_End(); // DXライブラリ終了処理
        return 0;
}

void game_main(int *timer){
	*timer++;
	counter++;
}
今まではcounterのようにグローバルで宣言していたものをtimerの
ようにしてみました。
しかし、counterは毎フレーム1増えていくのに、timerは0のままです。
ポインターの使い方が間違っているのでしょうか?
どなたか教えていただけないでしょうか?

DxライブラリーとVC++2008EEを使っています。

Re: グローバル変数を引数にする

Posted: 2011年8月30日(火) 23:13
by xxx
(*timer)++でどうでしょうか?
演算子の優先順位でアドレスがずれただけになってます

Re: グローバル変数を引数にする

Posted: 2011年8月30日(火) 23:22
by wing
roxion1377さん。
できました!
ありがとうございました。
たいへん勉強になりました。

Re: グローバル変数を引数にする

Posted: 2011年8月30日(火) 23:30
by wing
解決を忘れました。