Si luego de llamar a funcion en mi main.c quisiera acceder a Variable->a desde main tengo que definir algo en main.c ademas del include?
En teoría deberías poner
extern nombre Variable; pero ya lo has hecho en el header que incluyes, asi que no tienes que hacer nada mas...
--->
Te dejo algunos ejemplos...
#include <stdio.h>
double variable = 0;
void funcX() {
extern double variable; // Hacemos referencia a la varible que esta afuera de este proceso... NO ES NECESARIO.
variable = 50; // Cambiamos su valor.
}
int main() {
printf("%f\n", variable
); // imprimimos la variable funcX();
printf("%f\n", variable
); // imprimimos la variable return 0;
}
La teoría se puede aplicar de la misma manera en varios archivos por ejemplo.
main.h
#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED
extern int x; // esta variable no esta declarada en ningun header pero si en algun archivo ".c" en este caso test.c
// si no se declara de esta manera dara un error de que no se a declarado dicha variable...
#endif // MAIN_H_INCLUDED
main.c
#include <stdio.h>
int x = 0;
extern int y; // esta variable no esta declarada en ningun header pero si en algun archivo ".c" en este caso test.c
// si no se declara de esta manera dara un error de que no se a declarado dicha variable...
extern void funcx(); // Le decimos que es una
int main() {
printf("x = %d\ny = %d\n", x
, y
); // imprimimos la variable funcx(); // esta dentro del archivo text.h
printf("x = %d\ny = %d\n", x
, y
); // imprimimos la variable y = 666;
printf("x = %d\ny = %d\n", x
, y
); // imprimimos la variable return 0;
}
test.h
#ifndef TEST_H
#define TEST_H
#include "main.h"
void funcx();
#endif // TEST_H
test.c
#include "test.h"
int y = 0;
void funcx() {
x = 100;
y = 200;
}
o algo mas simplista pero no recomendado...
main.c
#include <stdio.h>
int x = 0;
extern int y; // esta variable no esta declarada en ningun header pero si en algun archivo ".c" en este caso test.c
// si no se declara de esta manera dara un error de que no se a declarado dicha variable...
extern void funcx(); // Le decimos que es una
int main() {
printf("x = %d\ny = %d\n", x
, y
); // imprimimos la variable funcx(); // esta dentro del archivo text.h
printf("x = %d\ny = %d\n", x
, y
); // imprimimos la variable y = 666;
printf("x = %d\ny = %d\n", x
, y
); // imprimimos la variable return 0;
}
test.c
extern int x;
int y = 0;
void funcx() {
x = 100;
y = 200;
}
Dulces Lunas!¡.