ページ 11

龍神プログラミングの館 8章

Posted: 2011年5月05日(木) 14:13
by qhqh
龍神プログラミングの館 8章でのことなのですが、最後にビルドをすると
main.cpp(33): error C3861: 'CheckStateKey': 識別子が見つかりませんでした
と出てビルドが成功しません、どこに識別子を加えればいいのでしょうか?
一応function.hにGLOBAL void CheckStateKey();と加えてやってみましたが変わりませんでした。

Re: 龍神プログラミングの館 8章

Posted: 2011年5月06日(金) 00:09
by softya(ソフト屋)
key.cppにあるはずですが、CheckStateKeyの名前が間違っていませんか?

Re: 龍神プログラミングの館 8章

Posted: 2011年5月06日(金) 16:15
by qhqh
見た限りでは間違ってないと思いますが、自分のkey.cppのコピーです。

コード:

#include "../include/GV.h"

unsigned int stateKey[256];

int GetHitKeyStateAll_2(){
    char GetHitKeyStateAll_Key[256];
    GetHitKeyStateAll( GetHitKeyStateAll_Key );
    for(int i=0;i<256;i++){
        if(GetHitKeyStateAll_Key[i]==1) stateKey[i]++;
        else                            stateKey[i]=0;
    }
    return 0;
}

int CheckStateKey(unsigned char Handle){
        return stateKey[Handle];
}

//パッドの入力状態を格納する変数
pad_t pad;

//引数1と引数2のうち大きい方を引数1に代入する
void input_pad_or_key(int *p, int k){
	   *p = *p>k ? *p : k;
}

//パッドとキーボードの両方の入力をチェックする関数
void GetHitPadStateAll(){
	    int i,PadInput,mul=1;
		PadInput = GetJoypadInputState( DX_INPUT_PAD1 );//パッドの入力状態を取得
		for(i=0;i<16;i++){
			    if(PadInput & mul)  pad.key[i]++;
				else                pad.key[i]=0;
				mul*=2;
		}
		input_pad_or_key(&pad.key[configpad.left]   ,CheckStatekey(KEY_INPUT_LEFT    ));
		input_pad_or_key(&pad.key[configpad.up]     ,CheckStatekey(KEY_INPUT_UP      ));
		input_pad_or_key(&pad.key[configpad.right]  ,CheckStatekey(KEY_INPUT_RIGHT   ));
		input_pad_or_key(&pad.key[configpad.down]   ,CheckStatekey(KEY_INPUT_DOWN    ));
		input_pad_or_key(&pad.key[configpad.shot]   ,CheckStatekey(KEY_INPUT_Z       ));
		input_pad_or_key(&pad.key[configpad.bom]    ,CheckStatekey(KEY_INPUT_X       ));
		input_pad_or_key(&pad.key[configpad.slow]   ,CheckStatekey(KEY_INPUT_LSHIFT  ));
		input_pad_or_key(&pad.key[configpad.start]  ,CheckStatekey(KEY_INPUT_ESCAPE  ));
		input_pad_or_key(&pad.key[configpad.change] ,CheckStatekey(KEY_INPUT_LCONTROL));
}

//渡されたパッドキー番号の入力状態を返す。返り値が-1なら不正
int CheckStatePad(unsigned int Handle){
	    if(0<=Handle && Handle<PAD_MAX){
			    return pad.key[Handle];
		}
		else{
			    printfDx("CheckStatePadに渡した値が不正です\n");
				return -1;
		}
}

Re: 龍神プログラミングの館 8章

Posted: 2011年5月06日(金) 16:31
by softya(ソフト屋)
あっ、エラーを見間違えてました。
function.h
の方を間違っていませんか?

Re: 龍神プログラミングの館 8章

Posted: 2011年5月06日(金) 17:13
by ISLe
qhqh さんが書きました:一応function.hにGLOBAL void CheckStateKey();と加えてやってみましたが変わりませんでした。
引数と戻り値の型が違いますね。

Re: 龍神プログラミングの館 8章

Posted: 2011年5月06日(金) 17:22
by qhqh
function.hに追加してみたのは最初の方に書いたやつと別に加えてみたということです。自分のfunction.hのコピーです。

コード:

//graph.cpp
        //描画メイン
        GLOBAL void graph_main();

//key.cpp
        //現在のキー入力処理を行う
        GLOBAL int GetHitKeyStateAll_2();
        //受け取ったキー番号の現在の入力状態を返す
        GLOBAL int CheckStatekey(unsigned char Handle);
//laod.cpp
        //データのロード
        GLOBAL void load();

		GLOBAL void first_ini();

		GLOBAL void calc_ch();

		GLOBAL void GetHitPadStateAll();
		GLOBAL int CheckStatePad(unsigned int Handle);

Re: 龍神プログラミングの館 8章

Posted: 2011年5月06日(金) 17:45
by softya(ソフト屋)
codeタグを追加しました。


GLOBAL int CheckStatekey(unsigned char Handle);
は間違っています。正しくは、
GLOBAL int CheckStateKey(unsigned char Handle);
です。
keyの大文字と小文字の違いなんですけどね。

Re: 龍神プログラミングの館 8章

Posted: 2011年5月06日(金) 18:13
by Dixq (管理人)
配布しているプロジェクトと全く同じように書いたはずなのにエラーが出る時は、
WinMergeなどのコードの比較が出来るソフトなどを使用して比較してみると良いと思いますよ。

Re: 龍神プログラミングの館 8章

Posted: 2011年5月06日(金) 23:38
by qhqh
解決しました!付き合っていただいた皆さんありがとうございました。
小文字と大文字の違いだなんて些細な事でお騒がせしてすいませんでした;;