Buenas, estoy realizando un programita en la que tengo una estructura en un .h y le tengo que dar valores desde otro programas para crear un hilo.Me da problemas al compilar : invalid initializer, al darle valores a la estructura.Los codigos son los siguientes:
Código (c) [Seleccionar]
/* Cabecera para hilo indeciso */
/* Argumento que se pasa al hilo indeciso */
/* Debe estar creado con malloc */
struct arg_ind {
float finic; /* Fila inicial */
float cinic; /* Columna inicial */
int id; /* Identificador (numero sobre el vehiculo) */
id_grafi_t id_grafi; /* Identificador de graficos abiertos */
};
/* Funcion de arranque del hilo indeciso */
/* El argumento debe ser un puntero a una estructura arg_ind
creada con malloc, que internamente se libera con free */
void *indeciso(void *p);
Código (c) [Seleccionar]
/* Inicializador de la interfaz grafica */
/* Cabeceras */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <pthread.h>
#include <signal.h>
#include "api_grafi.h" /* Interfaz grafica */
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include "indeciso_h.h"
#include "api_grafi.h"
/* Dimensiones y escala del grafico */
#define ESCALA_DIB 30
#define ALTO 10
#define ANCHO 10
int fondo[ALTO][ANCHO] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
};
void *indeciso(void *p);
int main(void)
{
id_grafi_t pgrafi;
pthread_t Hilo[3];
int status;
int *p;
/* Cambio */
pgrafi = abrir_graficos("migrafi", 1);
/* Fin cambio */
cambia_escala_id(ESCALA_DIB, pgrafi);
crear_fondo_id(fondo[0], ANCHO, ALTO, pgrafi);
printf("Ya he inicializado esto\n");
cerrar_graficos(pgrafi, 0);
printf("main: Acabando\n");
for(int i=1;i<4;i++){
p = malloc (4*sizeof(20));
//Aquí es donde tengo problemas
struct arg_ind ind=(i,i,i,pgrafi);
p = ind;
pthread_create(&Hilo[i-1],NULL, indeciso,(void*)p);
}
exit(0);
}