私は "ChessMoves.h"というヘッダファイルと、さまざまな機能を持つChessMovesというファイルを持っています。ヘッダファイルから関数を呼び出すのに助けが必要です
ヘッダファイル
#ifndef __CHESSMOVES_H
#define __CHESSMOVES_H
typedef struct Location
{
// the square's column ('a' through 'h')
char col;
// the square's row (1 through 8)
int row;
} Location;
typedef struct Move
{
// location where this piece is moving from
Location from_loc;
// location where this piece is moving to
Location to_loc;
// what type of chess piece is being moved
char piece;
// whether this move captures another piece
short int isCapture;
// the color of the piece being moved
Color color;
} Move;
私たちは、コードをテストするためのファイルを与えられ、そのファイルには、彼が持っていた私は
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ChessMoves.h"
void parseNotationString(char *str, Move *whiteMove, Move *blackMove){
int i, space = 0, j = 0, k = 0, l = 0;
int white[10], black[10], move[10], to[2];
whiteMove.color = WHITE;
if(white[0] > 64)
whiteMove.piece = white[0];
if(white[0] < 64)
whiteMove.from_loc.row = white[0];
for(i = 0; i < 10; i++)
if(white[i] == 'x')
whiteMove.isCapture = 1;
for(i = 0; j < 10; i++)
if(white[i] == ' ')
to[0] = white[i-2];
to[1] = white[i-1];
printf("%c %c", to[0], to[0]);
}
に呼んでいるファイル:
whiteMove.color != WHITE
とwhiteMove.colorがWHITEと等しくない場合、「FAIL」と表示されますので、試しました。
whiteMove.color = WHITE
しかし、私は構造体や共用体ではなく「メンバーの色の要求」を受けています。私が呼び出す他の構造体についても同じことが起こります。私はそれを試してみた
Move.color = WHITE
そしてどちらも動作しません。
なぜ初期化されていない 'white [0]'をテストしていますか? – Sergio
セミコロンがないため、Cの構文はありません。 – bmargulies
whiteMove.color = WHITE;は、whiteMove-> colorでなければなりません。それはポインタです。 – bmargulies