?演算子

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

?演算子

#1

投稿記事 by J » 17年前

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:?演算子

#2

投稿記事 by » 17年前

Field.h の 291 行目の前後 10 行ほどを見せてください。

また、[/url] の中には適切な式を書く必要があるはずです。

J

Re:?演算子

#3

投稿記事 by J » 17年前

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:?演算子

#4

投稿記事 by すく » 17年前

二次元配列の

後ろの[/url]はなにもはいらないの?

Re:?演算子

#5

投稿記事 by » 17年前

何か入ってないとまずいでしょうね。

それから、ヘッダーファイルに関数の実体を書いているのも
まずいでしょうね。

J

Re:?演算子

#6

投稿記事 by J » 17年前

そうですか、よくわかりました。試してみます。
二次元配列の[y][x]では片方は省略しても良いと聞いていましたが・・・

>それから、ヘッダーファイルに関数の実体を書いているのも
>まずいでしょうね。

詳しく教えて下さい。

Re:?演算子

#7

投稿記事 by » 17年前

省略できるのは宣言の時だけでは?

Re:?演算子

#8

投稿記事 by » 17年前

> 片方は省略しても良い

省略できる局面と、記述を省略できる場所について確認してください。
今のコードは、上記2点とも間違えています。

> 詳しく教えて下さい。

当該ヘッダーファイルを複数の *.c から
インクルードすることを想定してみてください。
同じ関数の定義が複数存在してしまいます。
逃れる方法はあるのですが、
それを差し置いてもヘッダーファイルに関数の実体は書かないのが通常のやり方です。
お使いのコンパイラのヘッダーファイルの中身をのぞいてみるとよいでしょう。

J

Re:?演算子

#9

投稿記事 by J » 17年前

エラーは解決できました。
回答をくださった方、本当にありがとうございました。

閉鎖

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