Salut tt le monde,
je suis en train de faire un prog en C avec plusieurs fichiers sources : le main.c et d'autres qui contiennent des fonctions. Je programme sur PIC avec Mplab-C18.
je me pose 2 questions :
- quand je déclare une variable dans le main, comment faire pour qu'elle soit accessible depuis les autres fichiers ?
- quand dans le main je tape : "#define flash_enable_write PORTAbits.RA0", comment faire pour utiliser "flash_enable_write" dans les autres fichiers ?
j'ai quelques début de solutions :
- en analysant les fichiers de fonctions diverses de MCC18, j'ai vu des trucs comme "extern volatile near unsigned char CCP2CON;" ou "extern near unsigned FSR0;"
- faut il placer tous les "#define" dans un *.h, et faire un "#include "*.h"" dans chaque fichier *.c ?
compilation avec plusieurs fichiers sources en C
Modérateur : Modérateur
Salut,
main()
{
int ma_variable;
ma_fonction(ma_variable);
}
cette solution est certe plus simple mais je te conseil la première en passant tes variable en paramètre qui plus "propre" ...
@+
Pour celà il faut passer ta variable en paramètre lorsque tu appel ta fonction.quand je déclare une variable dans le main, comment faire pour qu'elle soit accessible depuis les autres fichiers ?
main()
{
int ma_variable;
ma_fonction(ma_variable);
}
Dans ce cas il faut mieu utiliser un fichier .h que tu va créer et tu place tout des #define dedans et ensuite dans chaque fichier .c tu appel ton .h (#include mon_point_h.h). Dans le fichier .h tu doita voir aussi le prototype de tes fonctions ( ma_focntion(int ma_variable, float ma variable2); )- quand dans le main je tape : "#define flash_enable_write PORTAbits.RA0", comment faire pour utiliser "flash_enable_write" dans les autres fichiers ?
tu peu aussi utilisé une varible globale qui sera accéssible à ton main ainsi qu'à toute tes focntion qui utiliseron le fichier .h dans le quel tu l'aura créer ( extern int ma_variable_globale;)- en analysant les fichiers de fonctions diverses de MCC18, j'ai vu des trucs comme "extern volatile near unsigned char CCP2CON;" ou "extern near unsigned FSR0;"
cette solution est certe plus simple mais je te conseil la première en passant tes variable en paramètre qui plus "propre" ...
@+