int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
int White = GetColor( 255 , 255 , 255 ) ;
while(ProcessLoop()==0){//メインループ
title_disp(White,y);
title_key();
if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
ScreenFlip();//裏画面反映
}
DxLib_End();//DXライブラリ終了処理
return 0;
}
void title_disp(int x,int y){
DrawString( 150 , y , "→", x );
DrawString( 170 , 100 , "VS MODE" , x );
}
今、上のようなプログラムを書いたのですが、error C2660: 'title_disp' : 関数に 2 個の引数を指定できません。と表示されてしまいました。
なぜできないのでしょうか
引数についての理解が浅いせいかよくわかりません。
不足していることがあれば補足するのでよろしくお願いします。
引数の数について
Re:引数の数について
ソースは部分的ではなく、全部貼れ。
#include <dxlib.h>
とか
int y;
とかがあるだろう。
貼ってないソースのところに、
void title_disp();
とかいう宣言があるんじゃないのか ?
下の
>void title_disp(int x,int y){
にあわせて
void title_disp(int x,int y);
にすればいいんじゃないのか ?
#include <dxlib.h>
とか
int y;
とかがあるだろう。
貼ってないソースのところに、
void title_disp();
とかいう宣言があるんじゃないのか ?
下の
>void title_disp(int x,int y){
にあわせて
void title_disp(int x,int y);
にすればいいんじゃないのか ?
Re:引数の数について
おっしゃる通りでした!
でもまた新たなエラーが出たので貼らせていただきます
//main.cpp
#define GLOBAL_INSTANCE
#include "../include/GV.h"
//ループで必ず行う3大処理
int ProcessLoop(){
if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す
if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す
GetHitKeyStateAll_2();//現在のキー入力処理を行う
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
int White = GetColor( 255 , 255 , 255 ) ;
while(ProcessLoop()==0){//メインループ
title_disp(White,y);
title_key();
if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
ScreenFlip();//裏画面反映
}
DxLib_End();//DXライブラリ終了処理
return 0;
}
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==1) stateKey++;
else stateKey=0;
}
return 0;
}
int CheckStateKey(unsigned char Handle){
return stateKey[Handle];
}
int title_key(){
if( CheckStateKey(KEY_INPUT_DOWN)==1 ||(CheckStateKey(KEY_INPUT_DOWN)%5==0 && CheckStateKey(KEY_INPUT_DOWN)>30)){
y+=20;
if(y==260)
y=100;
}
return y;
}
title.cpp
#include "../include/GV.h"
void title_disp(int x,int y){
DrawString( 150 , y , "→", x );
DrawString( 170 , 100 , "VS MODE" , x );
}
function.h
//graph.cpp
//描画メイン
GLOBAL void graph_main();
//key.cpp
//現在のキー入力処理を行う
GLOBAL int GetHitKeyStateAll_2();
//受け取ったキー番号の現在の入力状態を返す
GLOBAL int CheckStateKey(unsigned char Handle);
GLOBAL void title_disp(int x,int y);
GLOBAL int title_key();
GV.h
#include "../../../include/DxLib.h"
#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern
#endif
#include "function.h" //関数宣言
GLOBAL int White;
GLOBAL int y=100;
#include "define.h"
こんな感じです
よろしくお願いします
でもまた新たなエラーが出たので貼らせていただきます
//main.cpp
#define GLOBAL_INSTANCE
#include "../include/GV.h"
//ループで必ず行う3大処理
int ProcessLoop(){
if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す
if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す
GetHitKeyStateAll_2();//現在のキー入力処理を行う
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
int White = GetColor( 255 , 255 , 255 ) ;
while(ProcessLoop()==0){//メインループ
title_disp(White,y);
title_key();
if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
ScreenFlip();//裏画面反映
}
DxLib_End();//DXライブラリ終了処理
return 0;
}
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==1) stateKey++;
else stateKey=0;
}
return 0;
}
int CheckStateKey(unsigned char Handle){
return stateKey[Handle];
}
int title_key(){
if( CheckStateKey(KEY_INPUT_DOWN)==1 ||(CheckStateKey(KEY_INPUT_DOWN)%5==0 && CheckStateKey(KEY_INPUT_DOWN)>30)){
y+=20;
if(y==260)
y=100;
}
return y;
}
title.cpp
#include "../include/GV.h"
void title_disp(int x,int y){
DrawString( 150 , y , "→", x );
DrawString( 170 , 100 , "VS MODE" , x );
}
function.h
//graph.cpp
//描画メイン
GLOBAL void graph_main();
//key.cpp
//現在のキー入力処理を行う
GLOBAL int GetHitKeyStateAll_2();
//受け取ったキー番号の現在の入力状態を返す
GLOBAL int CheckStateKey(unsigned char Handle);
GLOBAL void title_disp(int x,int y);
GLOBAL int title_key();
GV.h
#include "../../../include/DxLib.h"
#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern
#endif
#include "function.h" //関数宣言
GLOBAL int White;
GLOBAL int y=100;
#include "define.h"
こんな感じです
よろしくお願いします
Re:引数の数について
すいません
エラーは
1>key.obj : error LNK2005: "int y" (?y@@3HA) は既に title.obj で定義されています。
1>main.obj : error LNK2005: "int y" (?y@@3HA) は既に title.obj で定義されています。
1>fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
です
エラーは
1>key.obj : error LNK2005: "int y" (?y@@3HA) は既に title.obj で定義されています。
1>main.obj : error LNK2005: "int y" (?y@@3HA) は既に title.obj で定義されています。
1>fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
です
Re:引数の数について
余計なところで
#define GLOBAL_INSTANCE
しているとしか思えません。
これだけだと再現が難しいので、プロジェクト全体をZIPにして添付してもらえませんか?
#define GLOBAL_INSTANCE
しているとしか思えません。
これだけだと再現が難しいので、プロジェクト全体をZIPにして添付してもらえませんか?
Re:引数の数について
softyaさんのアドバイスでそれっぽいところを探してみたところ解決しました!
GLOBAL int y=100; が問題だったみたいで、GLOBAL int y;にしたら大丈夫でした
ありがとうございます!
GLOBAL int y=100; が問題だったみたいで、GLOBAL int y;にしたら大丈夫でした
ありがとうございます!