Error when I try to change 2D array in Switch case

Hello. Currently trying to have a 2D array that serves as memory to be changed on a switch case function. When inside the function I write the code to change the determined element of the array by the case, I get 2 errors: The first one “Array initializer must be an initializer list” on the first case and then for every other case I get “Redefinition of ‘memory’ with a different type: ‘int [y]’ vs ‘int [0][0]’”. I’ve tried everything from including the “&” on the variable parsed in the functioned(which is removed on this snippet) or “*” symbol but later learned that the parsing itself is already a pointer so it’s redundant, etc, and every time a new error pops up.

I’ve also tried this code on programix online compiler and it works. I’m truly lost. Bellow I’ll show the relevant snippet of the code. Any help to an MBED begginer is greatly appreciated

int memory [2][8] = {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}};

void exit_on(int exit){
switch (exit){
case 1:
memory[0][0]=1;
break;
case 2:
memory [0][1]={1};
break;
case 3:
memory[0][2]=1;
break;
case 4:
memory[0][3]=1;
break;
case 5:
memory[0][4]=1;
break;
case 6:
memory[0][5]=1;
break;
case 7:
memory[0][6]=1;
break;
case 8:
memory[0][7]=1;
break;
case 9:
memory[1][0]=1;
break;
case 10:
memory[1][1]=1;
break;
case 11:
memory[1][2]=1;
break;
case 12:
memory[1][3]=1;
break;
case 13:
memory[1][4]=1;
break;
case 14:
memory[1][5]=1;
break;
case 15:
memory[1][6]=1;
break;
case 16:
memory[1][7]=1;
break;

default:
printf("Error\n");
break;

}
}

Hello,

there must be another context. I took your part of code and make this simple demonstration and there is no error occur.

#include "mbed.h"

#define X 2
#define Y 8

DigitalOut* myled;

int memory [X][Y] = {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}};

void exit_on(int exit){
    switch (exit){
        case 1:
            memory[0][0]=1;
            break;
        case 2:
            memory [0][1]={1};
            break;
        case 3:
            memory[0][2]=1;
            break;
        case 4:
            memory[0][3]=1;
            break;
        case 5:
            memory[0][4]=1;
            break;
        case 6:
            memory[0][5]=1;
            break;
        case 7:
            memory[0][6]=1;
            break;
        case 8:
            memory[0][7]=1;
            break;
        case 9:
            memory[1][0]=1;
            break;
        case 10:
            memory[1][1]=1;
            break;
        case 11:
            memory[1][2]=1;
            break;
        case 12:
            memory[1][3]=1;
            break;
        case 13:
            memory[1][4]=1;
            break;
        case 14:
            memory[1][5]=1;
            break;
        case 15:
            memory[1][6]=1;
            break;
        case 16:
            memory[1][7]=1;
            break;
        default:
            printf("Error\n");
            break;
    }
}

int main(){
    printf("Test!\n");

    myled = new DigitalOut(LED1);
    uint16_t done = 0;

    while(1) {
        int temp = rand() % 16 + 1;
        printf("Random num: %d\nCurrent state of table:\n", temp);
        done |= 1UL << temp; 
        exit_on(temp);
        for(int ix = 0; ix < X;ix++){
            for(int iy = 0; iy < Y;iy++){
                printf("%d", memory[ix][iy]);
            }
        }
        printf("\n");
        if(done >= 65534){
            printf("Cleaning memory...\n");
            for(int ix = 0; ix < X;ix++){
                for(int iy = 0; iy < Y;iy++){
                     memory[ix][iy] = 0;
                }
            }
            done = 0;
            printf("Done!\n\n");
            thread_sleep_for(5000);
        } 
        *myled = !*myled;
        thread_sleep_for(500);
    }
}

BR, Jan