임 인쇄시 :치명적인 오류 코드의 작은 덩어리로이 문제를 갖는 2 차원 배열
for(x = 0; x < 8; x++){
for(y = 0; y < 8; y++){
printf(" %d", occupy[x][y]);
}
printf(" \n");
}
나는 게임 보이를 위해 임의로 생성 된 미로 게임을 만들고 있어요, 나는 2 차원 배열을 사용하고 있습니다 각 화면이 미로 어디에 있는지 알기. 테스트를 위해 필자는이 어레이를 인쇄하려고 시도하고 있으므로 계속 진행하기 전에 제대로 생성되는지 확인할 수 있습니다. 그 작은 덩어리의 코드로 컴파일하려고 할 때, 그 맨 윗줄에 오류가 생기면 파일에있는 치명적인 컴파일러 내부 오류가 나옵니다. 내가 알지 못하는 코드에 큰 no-no가 있습니까?
전체 코드는 : 내가 변경 한 그것을 수정 무엇을 왜 모르겠어요하지만
#include <gb\gb.h>
#include <stdio.h>
#include <rand.h>
#define UP 0x01U
#define RIGHT 0x02U
#define DOWN 0x04U
#define LEFT 0x08U
int occupy[8][8]= {
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}
};
void generate(){
int temp;
int x;
int y;
UBYTE restrict;
UBYTE direction;
for(x = 0; x < 8; x++){
for(y = 0; y < 8; y++){
occupy[x][y] = 0;
}
}
/* ========Occupy=Cleared========== */
restrict = 0x00U;
x = rand() & 7;
y = rand() & 7;
if(x == 6 || x == 7){ restrict += RIGHT;}
if(x == 0 || x == 1){ restrict += LEFT;}
if(y == 0 || y == 1){ restrict += UP;}
if(y == 6 || y == 7){ restrict += DOWN;}
/* in the rest of generation wrap this block in if(restrict != 0x0FU){ */
do{
temp = rand() & 3;
if(temp == 0){ direction = UP;}
if(temp == 1){ direction = RIGHT;}
if(temp == 2){ direction = DOWN;}
if(temp == 3){ direction = LEFT;}
}while(restrict & direction);
occupy[x][y] = 5;
if(direction == UP){ occupy[x][y-1] = 1;}
if(direction == RIGHT){ occupy[x+1][y] = 2;}
if(direction == DOWN){ occupy[x][y+1] = 3;}
if(direction == LEFT){ occupy[x-1][y] = 4;}
for(x = 0; x < 8; x++){
for(y = 0; y < 8; y++){
printf(" %d", occupy[x][y]);
}
printf(" \n");
}
}
void main(){
generate();
}
더 많은 코드를 표시하십시오! – Rizier123
이 코드는 컴파일되지 않습니다. 나머지 코드를 추가하면 컴파일러가 행복해 지는지 어떻게 알 수 있습니까? – nvoigt
"컴파일러 내부 오류"와 같은 것을 얻는 것은 매우 복잡한 컴파일러가 될 것이므로, (이론적으로) * 사용자로 간주해서는 안됩니다. 게시물을 편집하여 누군가가 편집기에 붙여넣고 오류를 재현 할 수있는 완전한 예제를 제공하고 사용중인 컴파일러 (및 해당 버전)를 식별하십시오. – HostileFork