ページ 1 / 1
?演算子
Posted: 2008年5月05日(月) 20:59
by J
a = (field[y[0]][/url] > field[y[1]][/url]) ? field[(y[0]+1)][/url] : field[(y[1]+1)][/url];
とやると、
エラー E2188 c:\field\Field.h 291: 式の構文エラー(関数 PieceDrop(int ( *)[8]) )
と表示されてしまいます。何が悪いのでしょうか?
Re:?演算子
Posted: 2008年5月05日(月) 21:48
by ・
Field.h の 291 行目の前後 10 行ほどを見せてください。
また、[/url] の中には適切な式を書く必要があるはずです。
Re:?演算子
Posted: 2008年5月06日(火) 11:13
by J
int PieceDrop(int (*field)[8])
{
//変数宣言、キーチェックの準備
char key[256];
int x[2]={3,3,},y[2]={0,1,},i=0,a;
GetHitKeyStateAll(key);
//ピースをセット
field[0][3] = Piece[0];
field[1][3] = Piece[1];
//移動のループ
while( i==0 )
{
if( key[KEY_INPUT_LSHIFT] == 1 && key[KEY_INPUT_RIGHT] == 1)
{
//右回転動作
}
if( key[KEY_INPUT_LSHIFT] == 1 && key[KEY_INPUT_LEFT] == 1)
{
//左回転動作
}
if( key[KEY_INPUT_DOWN] == 1 )
{
//高速落下
}
if( key[KEY_INPUT_RIGHT] == 1 )
{
//右移動
}
if( key[KEY_INPUT_LEFT] == 1 )
{
//左移動
}
a = (field[y[0]][/url] > field[y[1]][/url]) ? field[(y[0]+1)][/url] : field[(y[1]+1)][/url];
if(a != 0)
{
//下に何も無いかチェック
}
}
return 0;
}
Re:?演算子
Posted: 2008年5月06日(火) 14:25
by すく
二次元配列の
後ろの[/url]はなにもはいらないの?
Re:?演算子
Posted: 2008年5月06日(火) 15:12
by ・
何か入ってないとまずいでしょうね。
それから、ヘッダーファイルに関数の実体を書いているのも
まずいでしょうね。
Re:?演算子
Posted: 2008年5月06日(火) 20:13
by J
そうですか、よくわかりました。試してみます。
二次元配列の[y][x]では片方は省略しても良いと聞いていましたが・・・
>それから、ヘッダーファイルに関数の実体を書いているのも
>まずいでしょうね。
詳しく教えて下さい。
Re:?演算子
Posted: 2008年5月06日(火) 20:34
by
省略できるのは宣言の時だけでは?
Re:?演算子
Posted: 2008年5月06日(火) 20:54
by ・
> 片方は省略しても良い
省略できる局面と、記述を省略できる場所について確認してください。
今のコードは、上記2点とも間違えています。
> 詳しく教えて下さい。
当該ヘッダーファイルを複数の *.c から
インクルードすることを想定してみてください。
同じ関数の定義が複数存在してしまいます。
逃れる方法はあるのですが、
それを差し置いてもヘッダーファイルに関数の実体は書かないのが通常のやり方です。
お使いのコンパイラのヘッダーファイルの中身をのぞいてみるとよいでしょう。
Re:?演算子
Posted: 2008年5月07日(水) 05:32
by J
エラーは解決できました。
回答をくださった方、本当にありがとうございました。