C言語のソースコードをbcpadにコンパイルした際に、謎のエラーが出ます。
解決したいこと
本の問題をC言語で書き、ソースコードをbcpadにコンパイルした際に、謎のエラーが出ます。エラーの解決方法を教えてください。
発生している問題・エラー
■Z:\Documents> bcc32 991.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
991.c:
エラー E2378 991.c 7: Return文に ; がない(関数 right )
警告 W8057 991.c 8: パラメータ 'maze' は一度も使用されない(関数 right )
エラー E2378 991.c 13: Return文に ; がない(関数 left )
警告 W8057 991.c 14: パラメータ 'maze' は一度も使用されない(関数 left )
*** 2 errors in Compile ***
該当するソースコード
#include <stdio.h>
#define N 5
#define MASK (1 << (N * N)) - 1
unsigned int right(unsigned int maze){
return (maze >> 1) & 0b0111101111011110111101111;
}
unsigned int up(unsigned int maze){
return (maze << N) & MASK;
}
unsigned int left(unsigned int maze){
return (maze << 1) & 0b1111011110111101111011110;
}
unsigned int down(unsigned int maze){
return (maze >> N);
}
unsigned int (*move[])(unsigned int) = {right, up, left, down};
int enable(int maze){
unsigned int man = (1 << (N * N - 1)) & (MASK - maze);
while (1){
unsigned int next_man = man;
int i = 0;
for (i = 0; i < 4; i++){
next_man |= (*move[i])(man);
}
next_man &= (MASK - maze);
if (next_man & 1 == 1) return 1;
if (man == next_man) break;
man = next_man;
}
return 0;
}
int search(int maze, int p1, int d1, int p2, int d2, int turn){
int i = 0;
if (turn == 1){
if (p1 == p2) return 1;
if ((p1 == 1) || (p2 == 1 << (N * N - 1))) return 0;
}
for (i = 0; i < 4; i++){
int d = (d1 - 1 + i + 4) % 4;
int next_p = (*move[d])(p1);
if ((next_p & (MASK - maze)) > 0)
return search(maze, p2, d2, next_p, d, 1 - turn);
}
return 0;
}
int main(void) {
int count = 0;
int i = 0;
for (i = 0; i < (1 << N * N); i++){
if (enable(i) > 0){
if (search(i, 1 << (N * N - 1), 3, 1, 1, 1) > 0)
count++;
}
}
printf("%d", count);
return 0;
}
自分で試したこと
本の出版社に問い合わせたところ、出版社のコンパイラでは実行できるようでした。
0