Me supo pasar... y encima recien le daba publicar y me ponia unos tag de code al principio, lo mande como 3 veces hasta que se me ocurrio moverlo a un bloc de notas y revisarlo ahi, para darme cuenta que me habia saltado un tag de code, entonces el foro lo agregaba solo xD
PD: Fijate si hay algo mal, que seguro lo hay, asi de paso se le dice bien a thulsa y aprendo de mi error.
lo que dices es casi todo correcto, KILLERJC, pero en programación hay muchos puntos de vista, mi punto de vista es que creo que le estas hablando de algo bastante complicado a alguien que si no me equivoco esta aprendiendo y creo que tiene problemas de conceptos.
voy a exponer algunas cosas, simplemente para agrandar lo que te ha dicho KILLER no para corregir nada por que esta bien.
bueno, creo que lo que intentas aprender es C, por eso te daría como consejo que te olvides por completo de C++, olvidate de clases de objetos... de todo lo que sea C++ por que te vas a liar.
por otra parte si lo que quieres es aprender C para microcontroladores, No C18 no tiene C++, pero XC32 por ejemplo si te permite usarlo, pero como te digo yo me olvidaría de momento de eso.
Más dudas con las estructuras, ¿cómo puedo usar los datos de una estructura dentro de una función ajena de esa estructura?, sé que en variables si las haces globales tienes que definir esas variables en la función, ejemplo, si declaro una variable global
Código:
int ab;
en la función tengo que declararla así
Código:
extern int ab;
, ¿cómo sería con las estructuras?
esto concepto esta mal, si tu tienes una variables global, la puedes usar dentro de cualquier función del mismo fichero, y no tienes que definirla dentro de la funcion como extern
existen variables globales que se pueden usar en todo el .c y las locales que las declaras, dentro de una función, y estas variables solo existen dentro de esta función. por ejemplo:
void funcion1(void)
{
unsigned char variable1=0;
}
la "variable1" solo existe dentro de la "funcion1" y no podrás usarla dentro de ninguna otra función, esta variable se destruirá cada vez que se salga de la función. si no quieres que se pierda el valor cuando salga de la funcion deberas declararla como "static unsigned char variable1" de esta manera no se perderá el valor y cuando vuelva a entrar en la función mantendrá su valor.
lo mismo pasa con las estructuras, si la declaras global, esta disponible en todo el fichero .c, si solo la declaras en una función solo estará en esa función.
hasta aqui bien?
lo de "extern" el termino extern se utiliza cuando una variable globar esta declarada en otro fichero ejemplo:
imagina que tenemos un fichero que se llama main.c y dentro es de esta manera de esta manera:
unsigned char global1=0;
void main(void)
{
while(true){}
}
tenemos una variable global llamada "global1" disponible para todas las funciones de main.c
pero tenemos otro fichero llamado libreria.c que es asi:
extern unsigned char global1;
void funcion(void)
{
}
ahora la variable global de main.c esta tambien disponible en libreria.c pero la directiva extern le ha dicho que esta declarada en otro lado (fijate que no se inicializa, por que se estaria inicializando en dos sitios y eso no puede ser)
Pero tengo dudas de donde declararlas si en xx.c o en xx.h, es que he visto programas donde se declaran en el .h pero cuando yo hago algún ejemplo me da error, me dice que myPrueba tiene varios argumentos o algo de eso
esto seguramente has creado tu estructura en un .h y llamas al .h mas de una vez o algo por el estilo.
te recomiendo te bajes esto :
http://www.todopic.com.ar/foros/index.php?topic=44931.0el archivo v0.9.zip, hay se hacen uso intensivo de estructuras definidas en .h se crean en otros ficheros, se llaman en funciones etc. tendrás casi todos los ejemplos posibles, incluso de vectores dentro de estructuras.
y así al menos este fichero le servirá a alguien por que no lo ha querido nadie hahaha.
parece que la base de creación de estructuras y tal lo tienes mas o menos claro pero fallas en algunos conceptos y esos creo que son tus problemas
lo de los punteros que te menciona KILLER es muy buena herramienta, de lo mejor que tiene C, pero no creo que hayas llegado a estudiarlos todavía.
repasate los conceptos de funciones y variables globales y locales creo que te vendrá bien.
un saludo