У меня проблема с этим кодом, я должен создать матрицу семафоров, используя структуру "tavole", но при компиляции возникает ошибка:
error: несовместимые типы при инициализации type 'int 'using type' sem_t {aka union} 'tavole matrici = {шахматная доска [SO_ALTEZZA] [SO_BASE], sem_matrix [SO_ALTEZZA] [SO_BASE], posFree};
Можете ли вы объяснить, почему?
typedef struct {
int scacchiera[SO_ALTEZZA][SO_BASE];
sem_t semafori[SO_ALTEZZA][SO_BASE];
int posLibere;
}tavole;
int main(void){
void inizializza_matrice(int matrice[SO_ALTEZZA][SO_BASE],
int n);
void inizializza_sem_matrix(
sem_t matrice[SO_ALTEZZA][SO_BASE],
int n);
int chessboard[SO_ALTEZZA][SO_BASE], posFree = 0, value = 0;
sem_t sem_matrix[SO_ALTEZZA][SO_BASE];
tavole matrici =
{chessboard[SO_ALTEZZA][SO_BASE],
sem_matrix[SO_ALTEZZA][SO_BASE],
posFree};
inizializza_matrice(matrici.scacchiera, 0);
inizializza_sem_matrix(matrici.sem_matrix, 0);
for(int i = 0; i < SO_ALTEZZA; i++){
printf("\n");
for(int j = 0; j < SO_BASE; j++){
sem_getvalue(&matrici.semafori[i][j], &value);
printf("%d ", value);
}
}
return 0;
}
void inizializza_matrice
(int matrice[SO_ALTEZZA][SO_BASE], int n){
for(int i = 0; i < SO_ALTEZZA; i++){
for(int j = 0; j < SO_BASE; j++){
matrice[i][j] = n;
}
}
}
void inizializza_sem_matrix
(sem_t matrix[SO_ALTEZZA][SO_BASE], int n){
for(int i = 0; i < SO_ALTEZZA; i++){
for(int j = 0; j < SO_BASE; j++){
sem_init(&matrix[i][j], 0, n);
}
}
}