Xeus-cling function definition is not allowed here

If you run twice a code that defines the same variable or a function, you will encounter a compiler error, with a bad looking Red Error Message (error: redefinition of '...'). There are several ways to work around this :

Method 1: restart the compiler from scratch

select "Kernel/Restart" and re-run the different cells

MY ERROR MESSAGE:

~/workspace/pset3/fifteen/ $ make fifteen clang -ggdb3 -O0 -std=c11 -Wall -Werror -o fifteen fifteen.c -lcs50 -lm fifteen.c:221:1: error: function definition is not allowed here { ^ fifteen.c:260:1: error: function definition is not allowed here { ^ fifteen.c:281:2: error: expected '}' } ^ fifteen.c:195:1: note: to match this '{' { ^ 3 errors generated. make: *** [fifteen] Error 1

MY CODE:

#define _XOPEN_SOURCE 500 #include #include #include #include // constants #define DIM_MIN 3 #define DIM_MAX 9 // board int board[DIM_MAX][DIM_MAX]; // dimensions int d; // prototypes void clear(void); void greet(void); void init(void); void draw(void); bool move(int tile); bool won(void); int main(int argc, string argv[]) { // ensure proper usage if (argc != 2) { printf("Usage: fifteen d\n"); return 1; } // ensure valid dimensions d = atoi(argv[1]); if (d < DIM_MIN || d > DIM_MAX) { printf("Board must be between %i x %i and %i x %i, inclusive.\n", DIM_MIN, DIM_MIN, DIM_MAX, DIM_MAX); return 2; } // open log FILE* file = fopen("log.txt", "w"); if (file == NULL) { return 3; } // greet user with instructions greet(); // initialize the board init(); // accept moves until game is won while (true) { // clear the screen clear(); // draw the current state of the board draw(); // log the current state of the board (for testing) for (int i = 0; i < d; i++) { for (int j = 0; j < d; j++) { fprintf(file, "%i", board[i][j]); if (j < d - 1) { fprintf(file, "|"); } } fprintf(file, "\n"); } fflush(file); // check for win if (won()) { printf("ftw!\n"); break; } // prompt for move printf("Tile to move: "); int tile = GetInt(); // quit if user inputs 0 (for testing) if (tile == 0) { break; } // log move (for testing) fprintf(file, "%i\n", tile); fflush(file); // move if possible, else report illegality if (!move(tile)) { printf("\nIllegal move.\n"); usleep(2000000); } // sleep thread for animation's sake usleep(2000000); } // close log fclose(file); // success return 0; } /** * Clears screen using ANSI escape sequences. */ void clear(void) { printf("\033[2J"); printf("\033[%d;%dH", 0, 0); } /** * Greets player. */ void greet(void) { clear(); printf("WELCOME TO GAME OF FIFTEEN\n"); usleep(2000000); } /** * Initializes the game's board with tiles numbered 1 through d*d - 1 * (i.e., fills 2D array with values but does not actually print them). */ void init(void) { if (d % 2 != 0) { for (int i = 0; i < d; i++) { for (int j = 0; j < d; j++) { board[i][j] = d^2 - 1 - j - d*i; } } board[d - 1][d - 1] = 0; board[d - 1][d - 2] = 2; board[d - 1][d - 3] = 1; } else; { for (int i = 0; i < d; i++) { for (int j = 0; j < d; j++) { board[i][j] = d^2 - 1 - j - d*i; } } board[d - 1][d - 1] = 0; } } /** * Prints the board in its current state. */ void draw(void) { for (int i = 0; i < d; i++) { for (int j = 0; j < d; j++) { if (board[i][j] <= 10) { printf(" "); if (board[i][j] % d == 0 && board[i][j] != 0) { printf("%i \n", board[i][j]); } else; { printf("%i ", board[i][j]); } } } } /** * If tile borders empty space, moves tile and returns true, else * returns false. */ bool move(int tile) { int zeroi = d - 1; int zeroj = d - 1; for (int i = 0, i < d, i++) { for(int j = 0, j < d, j++) { if (board[i][j] == tile) { int tilei = i; int tilej = j; if ((abs(tilei - zeroi) < 2)^(abs(tilej - zeroj) < 2)) { board[zeroi][zeroj] = tile; board[tilei][tilej] = 0; draw(); return true; break; } else; { return false; break; } } else; { printf("Tile is not found"); return false; } } } return false; } bool won(void) { int count = 0; for (int i = 0; i < d; i++) { for(int j = 0; j < d; j++) { if (board[i][j] == j + i*d) { count = count + 1; } } if (count == d*d) { return true; } else; { return false; } } }

Toplist

Latest post

TAGs