UTNianos

Versión completa: duda con error en estructura por includes de archivos
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola, estoy intentando inicializar una estructura, pero estoy con problemas ya que no me la toma mi otro archivo. Lo que hago es lo siguiente:

Archivo main.c:


#include "switches.h"

// TODO: insert other definitions and declarations here

struct sw_anti_reobte
{
int push; //si se llego a 0 en val del conteo se pone en uno
int val;//valor a contar segun se mantiene presionada la tecla
}extern sw[2]; //puse un extern para ver si con esto me solucionaba el error pero nada

int main(void)
{
return 0;
}




Archivo switches.c: (aca es donde no me detecta a la variable sw de tipo estructura, me dice que no esta declarada)


#include "switches.h"

//TODO MI RESTO DE FUNCIONES DONDE ACCEDO A LA VARIABLE HACIENDO LO SIGUIENTE:
sw[0].push = 1;//Por ejemplo eso




Saludos!
Nutters, no te comiste un typedef?
(26-09-2014 19:17)Santi Aguito escribió: [ -> ]Nutters, no te comiste un typedef?

nono, igual recien lo solucione, hice una funcion que me devuelva el valor de la estructura y listo. =P
Good!
Hola! por lo que entiendo no te toma la variable porque sw esta declarada en el archivo main.c y vos lo queres usar en switches.c . Si bien sw es var. global solo lo es para main.c
Creo que con esto funciona:
Archivo switches.c

#include "switches.h"

extern struct sw_anti_rebote sw[]; // aca estarias diciendo que vas a usar una variable que esta declarada en otro archivo

int funiones(....) {

sw[1].push=2 // y aca usas sw

....
}


Otra forma es que directamente crees sw dentro del archivo switches.h y asi va a ser visible para cualquier archivo que use ese header


Saludos


Ahh otra cosa es que hacer
struct sw_anti {
.....
}extern sw[2] <---- sino me equivoco poner ese extern no tiene sentido o directamente no es valido
(28-09-2014 00:12)durasno escribió: [ -> ]Hola! por lo que entiendo no te toma la variable porque sw esta declarada en el archivo main.c y vos lo queres usar en switches.c . Si bien sw es var. global solo lo es para main.c
Creo que con esto funciona:
Archivo switches.c

#include "switches.h"

extern struct sw_anti_rebote sw[]; // aca estarias diciendo que vas a usar una variable que esta declarada en otro archivo

int funiones(....) {

sw[1].push=2 // y aca usas sw

....
}


Otra forma es que directamente crees sw dentro del archivo switches.h y asi va a ser visible para cualquier archivo que use ese header


Saludos


Ahh otra cosa es que hacer
struct sw_anti {
.....
}extern sw[2] <---- sino me equivoco poner ese extern no tiene sentido o directamente no es valido

Gracias! lo tendre en cuenta! =D
URLs de referencia